如何使用cmake编译包含c程序的MPI
我正在尝试将openmp和mpi技术应用于开源C程序,该程序需要构建“cmake。&& make”。 我已经找到了如何在CMake的try_compile函数中为OpenMP设置链接器标志如何包含-fopenmp标志但仍然混淆了mpi。 我该怎么办?
OpenMP的
这是关于OpenMP的问题吗? 然后你所要做的就是使用-fopenmp
进行编译,你可以通过将它附加到CMAKE_C_FLAGS
来CMAKE_C_FLAGS
,例如:
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp)
MPI
对于MPI ,你必须先找到mpi
find_package(MPI) #make it REQUIRED, if you want
然后将它的头文件添加到您的搜索路径
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
最后链接你的程序(在我的情况下是my_mpi_target
)
target_link_libraries(my_mpi_target ${MPI_C_LIBRARIES})
在基于目标的现代CMake 3.X中,CMakeLists.txt应如下所示:
cmake_minimum_required(VERSION 3.0) project(main) find_package(MPI REQUIRED) # add this line only when you are using openmpi which has a different c++ bindings add_definitions(-DOMPI_SKIP_MPICXX) # Use imported targets would make things much eazier. Thanks Levi for pointing it out. add_executable(main main.cpp) target_link_libraries(main PRIVATE MPI_C) # Old way. #target_link_libraries(main # PRIVATE # ${MPI_C_LIBRARIES}) #target_include_directories(main # PRIVATE # ${MPI_C_INCLUDE_PATH})