如何使用CMake构建MPI C++程序?
CMake 构建 MPI C++ 程序操作指南
不需要手动强制指定编译器为mpic++,CMake 内置了FindMPI模块可以自动适配不同平台的 MPI 环境(兼容 OpenMPI、MPICH 等常见发行版)。
子目录 CMakeLists.txt 写法示例
假设你当前子目录的 MPI 程序源文件为mpi_app.cpp,需要生成名为my_mpi_app的可执行文件,对应CMakeLists.txt内容如下:
# 按需调整最低CMake版本要求,和你项目整体的版本保持一致即可 cmake_minimum_required(VERSION 3.10) # 查找MPI C++ 依赖,REQUIRED代表找不到依赖就终止构建 find_package(MPI REQUIRED CXX) # 声明要生成的可执行文件目标,后面列全所有关联源文件 add_executable(my_mpi_app mpi_app.cpp) # 关联MPI编译选项、头文件路径 target_compile_options(my_mpi_app PRIVATE ${MPI_CXX_COMPILE_FLAGS}) target_include_directories(my_mpi_app PRIVATE ${MPI_CXX_INCLUDE_PATH}) # 关联MPI链接依赖、链接参数 target_link_libraries(my_mpi_app PRIVATE ${MPI_CXX_LIBRARIES} ${MPI_CXX_LINK_FLAGS})
如果你这个子目录是作为父项目的一部分存在,只需要在父项目的CMakeLists.txt中添加add_subdirectory(当前子目录的相对路径)即可,不需要额外调整父项目的其他配置。
构建操作步骤
- 先确认本地已经安装了MPI开发环境,且
mpic++在当前环境的PATH路径中可被正常访问 - 执行常规CMake构建流程即可,示例命令如下:
# 创建构建目录并进入 mkdir build && cd build # 生成构建配置 cmake .. # 执行编译 make
- 如果你的MPI安装在非标准路径,CMake无法自动探测到,可以在执行cmake命令时手动指定
mpic++路径:
cmake .. -DMPI_CXX_COMPILER=/你的/mpic++/绝对路径
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

