gpt4 book ai didi

c++ - CMake:手动设置 MPI header 和二进制文件的路径

转载 作者:行者123 更新时间:2023-12-01 23:54:46 31 4
gpt4 key购买 nike

我正在开发一个 MPI 应用程序,该应用程序需要使用 MPI 的特定实现(我们称之为 MPIvA)来运行。在我的工作站上,安装了 MPI 的另一个实现(我们称之为 MPIvB)。

我的应用程序是使用 CMake 构建的,find_library(MPI) 显然指向 MPIvB。它可以轻松编译和运行。

我在我的工作站上编译了 MPIvA。如何让 CMake 使用这些 header 和二进制文件?

最佳答案

CMake 附带了一个 FindMPI 模块,可以为您完成所有繁重的工作。

在 CMakeLists.txt 中,不要调用 find_library(MPI),而是使用 find_package,如下所示:

#### MPI
find_package(MPI REQUIRED)
if (MPI_FOUND)
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
else (MPI_FOUND)
message(SEND_ERROR "This application cannot compile without MPI")
endif (MPI_FOUND)

然后,无论您在何处链接应用程序,都链接到 ${MPI_LIBRARIES}:

target_link_libraries(example-app ${MPI_LIBRARIES})

现在 cmake 将自动在您的系统中查找一个 MPI 实现。如果您有多个不同的 MPI 版本,并且想要指定使用哪个版本进行编译,可以将 MPI_C_COMPILERMPI_CXX_COMPILER 变量设置为相应的 mpiccmpicxx 编译器包装器。然后,CMake 模块将使用这些来找出所有必需的编译器和链接器标志本身。

示例:

cmake -DMPI_C_COMPILER=/usr/share/mvapich/bin/mpicc your-project-dir

要确保 cmake 使用正确的 MPI,请从新的空构建目录开始。

有关 FindMPI 模块的更多信息:https://cmake.org/cmake/help/v3.0/module/FindMPI.html

关于c++ - CMake:手动设置 MPI header 和二进制文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091579/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com