Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compilation CMake项目中的自定义MPI路径_Compilation_Cmake_Mpi - Fatal编程技术网

Compilation CMake项目中的自定义MPI路径

Compilation CMake项目中的自定义MPI路径,compilation,cmake,mpi,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

我正在构建一个使用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\u INSTALL\u前缀:path
告诉CMakes
FindMPI
关于自定义安装一样,确保自定义的
mpicc
mpicxx
位于
$PATH
中就足够了。或者,您也可以这样提供:

cmake -DMPI_C_COMPILER=/path/to/bin/mpicc -DMPI_CXX_COMPILER=/path/to/bin/mpicxx
CMake将根据编译器包装器选择其余部分。但是,您不应将
CMAKE\u C\u编译器
/
CMAKE\u CXX\u编译器
设置为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的目标类似。

要告诉CMakes
FindMPI
有关自定义安装的信息,只需确保您的自定义
mpicc
mpicxx
位于
$PATH
中即可。或者,您也可以这样提供:

cmake -DMPI_C_COMPILER=/path/to/bin/mpicc -DMPI_CXX_COMPILER=/path/to/bin/mpicxx
CMake将根据编译器包装器选择其余部分。但是,您不应将
CMAKE\u C\u编译器
/
CMAKE\u CXX\u编译器
设置为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目标类似