FindMPI fails to set MPI_<lang>_INCLUDE_DIRS and MPI_<lang>_LIBRARIES even if MPI_<lang>_FOUND reports true
Using the attached file FindMPIBug.cmake
, I get the following output using CMake-3.10.0
:
-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicc
-- Check for working C compiler: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx
-- Check for working CXX compiler: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found MPI_C: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicc (found version "3.1")
-- Found MPI_CXX: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- MPI_FOUND TRUE
-- MPI_INCLUDE_PATH
-- MPI_CXX_FOUND TRUE
-- MPI_CXX_INCLUDE_DIRS
-- MPI_CXX_LIBRARIES
-- MPI_CXX_COMPILER /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx
-- MPI_C_FOUND TRUE
-- MPI_C_INCLUDE_DIRS
-- MPI_C_LIBRARIES
-- MPI_C_COMPILER /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicc
-- Found MPI_C: /mnt/data/darndt/Sources/openmpi-clang-5.0.0/lib/libmpi.so (found version "3.1")
-- MPI_FOUND TRUE
-- MPI_INCLUDE_PATH
-- MPI_CXX_FOUND TRUE
-- MPI_CXX_INCLUDE_DIRS
-- MPI_CXX_LIBRARIES
-- MPI_CXX_COMPILER /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx
-- MPI_C_FOUND TRUE
-- MPI_C_INCLUDE_DIRS /mnt/data/darndt/Sources/openmpi-clang-5.0.0/include;/usr/local/include
-- MPI_C_LIBRARIES /mnt/data/darndt/Sources/openmpi-clang-5.0.0/lib/libmpi.so
-- MPI_C_COMPILER /mnt/data/darndt/Sources/openmpi-clang-5.0.0/bin/mpicxx
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/data/darndt/TestBoostBug
In particular, MPI_C_FOUND
and MPI_CXX_FOUND
are reported to be true if the MPI_CXX_COMPILER
resp. MPI_C_COMPILER
are compiler wrapper although neither MPI_<lang>_INCLUDE_DIRS
nor MPI_<lang>_LIBRARIES
are set for any of the two.
A second run, for which all MPI_<lang>_COMPILER
variables are cleared, also reports MPI_CXX_FOUND
and MPI_C_FOUND
with the same compilers as before. This time at least MPI_C_INCLUDE_DIRS
and MPI_C_LIBRARIES
are set.
The same file gives for CMake-3.5.1 the following output
-- Found MPI_C: /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
-- Found MPI_CXX: /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
-- MPI_FOUND TRUE
-- MPI_INCLUDE_PATH /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/include
-- MPI_CXX_INCLUDE_DIRS
-- MPI_CXX_LIBRARIES /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
-- MPI_C_INCLUDE_DIRS
-- MPI_C_LIBRARIES /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
-- MPI_FOUND TRUE
-- MPI_INCLUDE_PATH /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/include
-- MPI_CXX_INCLUDE_DIRS
-- MPI_CXX_LIBRARIES /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
-- MPI_C_INCLUDE_DIRS
-- MPI_C_LIBRARIES /mnt/data/darndt/Sources/openmpi-gcc-7.2.0/lib/libmpi.so
which seems to be correct. This issue was initially reported at https://github.com/dealii/dealii/issues/5510.
Is this change in behavior intended or is there a known workaround?