我正在构建一个使用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一样
发布于 2017-03-27 19:55:47
要告诉CMakes FindMPI有关自定义安装的信息,只需确保您的自定义mpicc和mpicxx位于$PATH中就足够了。或者,您也可以这样提供:
cmake -DMPI_C_COMPILER=/path/to/bin/mpicc -DMPI_CXX_COMPILER=/path/to/bin/mpicxxCMake将根据编译器包装器获取其余部分。但是,您不应该将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目标类似。
https://stackoverflow.com/questions/43054602
复制相似问题