CMake项目中的自定义MPI路径

时间:2017-03-27 19:13:31

标签: compilation cmake mpi

我正在构建一个使用MPI的项目。

这是CMakeLists.txt

if(__OPENNN_MPI__)    
   find_package(MPI)    
       if(MPI_FOUND)
        message("Using MPI")
        set(CMAKE_CXX_COMPILER mpicxx)
        set(CMAKE_C_COMPILER mpicc)
        set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS}")
        set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS}")
        add_definitions(-D__OPENNN_MPI__ )
    endif() 
endif()

我传递了一个cmake的参数来启用这段代码。

我的MPI安装位于自定义路径中,例如/path/to/MPI

我只是将MPI路径添加到我的$ PATH并运行cmake .或者是否有我应该设置的标志,就像我们设置-DCMAKE_INSTALL_PREFIX:PATH

一样

1 个答案:

答案 0 :(得分:1)

要告知CMakes FindMPI有关自定义安装的信息,只需确保自定义mpiccmpicxx位于$PATH即可。或者,您可以这样提供它们:

cmake -DMPI_C_COMPILER=/path/to/bin/mpicc -DMPI_CXX_COMPILER=/path/to/bin/mpicxx

CMake将根据编译器包装器获取其余部分。但是,不应将CMAKE_C_COMPILER / CMAKE_CXX_COMPILER 设置为MPI编译器包装器。代替:

include_directories(SYSTEM ${MPI_INCLUDE_PATH})

对于每个C ++目标:

target_link_libraries(target ${MPI_CXX_LIBRARIES})
if(MPI_CXX_COMPILE_FLAGS)
  set_target_properties(target PROPERTIES COMPILE_FLAGS "${MPI_CXX_COMPILE_FLAGS}")
endif()
if(MPI_CXX_LINK_FLAGS)
  set_target_properties(target PROPERTIES LINK_FLAGS "${MPI_CXX_LINK_FLAGS}")
endif()

C同样的目标。