[CMake] FindMPI and setting C/C++ compiler

Marcel Loose loose at astron.nl
Wed May 26 12:15:38 EDT 2010


True, but that raises (at least) two questions:

1) What's the use of the variable MPI_COMPILER if it cannot be used to
set the C/C++ compiler.

2) I know how to handle MPI_COMPILE_FLAGS - use add_definitions();
MPI_INCLUDE_PATH - use include_directories(); MPI_LIBRARIES - use
target_link_libraries(). But how do I handle MPI_LINK_FLAGS?

Regards,
Marcel Loose.

On Wed, 2010-05-26 at 17:38 +0200, Michael Wild wrote:
> On 26. May, 2010, at 17:20 , Marcel Loose wrote:
> 
> > Hi all,
> > 
> > I was wondering how one should use find_package(MPI) to properly set
the
> > C/C++ compiler(s). Normally, you call find_package() after the
project()
> > command. However, by that time the CMAKE_<LANG>_COMPILER cache
variables
> > have already been set. Should one FORCE these cache variables to the
> > value of MPI_COMPILER?
> > 
> > I vaguely remember that setting CMAKE_<LANG>_COMPILER after the
> > project() statement was a definite no-no, because all kinds of
tests,
> > executed by the project() command, are done with the default C/C++
> > compilers.
> > 
> > Best regards,
> > Marcel Loose.
> 
> 
> Usually mpiCC and cohorts are just wrapper scripts which add
appropriate include directories and libraries to the command line. If I
remember correctly, FindMPI.cmake detects those and provides them via
MPI_COMPILE_FLAGS, MPI_INCLUDE_PATH, MPI_LINK_FLAGS and MPI_LIBRARIES.
So, you actually don't need to set the compiler to one of the MPI
compiler wrappers.
> 
> Michael




More information about the CMake mailing list