我正在构建一个使用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
答案 0 :(得分:1)
要告知CMakes FindMPI
有关自定义安装的信息,只需确保自定义mpicc
和mpicxx
位于$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同样的目标。