Windows系统CLion中运行MSMPI失败的CMake配置问题
解决Win10下CLion中GCC编译MPI程序的CMake配置问题
作为MPI新手在Win10的CLion里跑第一个Hello World就卡壳确实挺闹心的,我来帮你拆解下问题根源,一步步搞定配置:
问题分析
你之前的CMake写法有两个关键问题:
- 顺序错误:你先手动指定了
${MSMPI_INC}的头文件路径,再调用find_package(MPI)——但find_package本身会自动探测MPI的头文件和库路径,手动提前指定不仅没必要,还可能干扰CMake的探测逻辑; - 环境变量未生效:
${MSMPI_INC}这个变量如果没提前在系统环境变量里配置好,CMake根本识别不到它,等于这条include_directories指令完全没起作用。
另外,Windows下的Microsoft MPI需要CMake明确找到它的安装路径,不然默认的FindMPI模块可能找不到对应的编译工具和依赖文件。
正确配置步骤
1. 先确认Microsoft MPI的安装
确保你已经安装了完整的Microsoft MPI包:包括Runtime和SDK(默认安装路径是C:\Program Files\Microsoft MPI)。
- 头文件路径:
C:\Program Files\Microsoft MPI\Include - 库文件路径(64位):
C:\Program Files\Microsoft MPI\Lib\x64 - 编译工具路径:
C:\Program Files\Microsoft MPI\Bin(里面有mpicc.exe、mpiexec.exe等工具)
2. 调整CMakeLists.txt写法
下面是两种可靠的配置方式,选一种即可:
方式一:让CMake自动探测(推荐)
如果你的系统环境变量里已经把Microsoft MPI的Bin目录加入了PATH,或者手动指定MPI根路径,CMake可以自动找到依赖:
cmake_minimum_required(VERSION 3.14) project(A C) # 手动指定MPI根路径(如果CMake自动找不到的话,根据你的安装路径修改) set(MPI_ROOT "C:/Program Files/Microsoft MPI") # 查找MPI依赖 find_package(MPI REQUIRED) # 添加可执行文件 add_executable(A mpi_hello.c) # 关联MPI的头文件和库(现代CMake写法,更规范) target_include_directories(A PRIVATE ${MPI_C_INCLUDE_DIRS}) target_link_libraries(A PRIVATE ${MPI_C_LIBRARIES})
方式二:手动指定所有路径(适合CMake探测失败的情况)
如果自动探测还是不行,可以直接硬编码路径(不推荐,但应急好用):
cmake_minimum_required(VERSION 3.14) project(A C) # 手动指定MS MPI的头文件和库路径 set(MSMPI_INCLUDE "C:/Program Files/Microsoft MPI/Include") set(MSMPI_LIB "C:/Program Files/Microsoft MPI/Lib/x64") include_directories(${MSMPI_INCLUDE}) link_directories(${MSMPI_LIB}) add_executable(A mpi_hello.c) # 链接MPI的库文件 target_link_libraries(A msmpi.lib)
3. CLion的额外配置
如果还是出现Could NOT find MPI的错误,你可以在CLion里手动给CMake传递参数:
- 打开
File->Settings->Build, Execution, Deployment->CMake - 在
CMake options里添加:-DMPI_ROOT="C:/Program Files/Microsoft MPI" - 点击
Apply后,重新加载CMake项目。
4. 运行程序的正确姿势
编译成功后,不能直接点击CLion的运行按钮(这样只会启动单个进程),需要用mpiexec启动多进程:
- 打开
Run->Edit Configurations - 新建一个
Application配置:Program选择C:\Program Files\Microsoft MPI\Bin\mpiexec.exeArguments填写-n 4 ./A.exe(-n 4表示启动4个进程,./A.exe是你的可执行文件路径,根据实际情况调整)
- 保存配置后,点击运行就能看到多进程的Hello World输出了。
内容的提问来源于stack exchange,提问作者Billy Yan
相关产品推荐
相关产品推荐

