【问题标题】:Custom MPI Path in CMake ProjectCMake 项目中的自定义 MPI 路径
【发布时间】:2023-03-10 14:37:01
【问题描述】:

我正在构建一个使用 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 一样

【问题讨论】:

    标签: compilation cmake mpi


    【解决方案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 目标类似。

    【讨论】:

      猜你喜欢
      • 2018-11-18
      • 2022-01-01
      • 1970-01-01
      • 2019-01-28
      • 2011-07-26
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多