首先,安装OpenMP
sudo apt-get install libomp-dev
然后,编辑Clion生成的CMakeLists.txt,在任意set后面加上下面的代码
find_package(OpenMP) if (OPENMP_FOUND) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") endif()
下面是一个完整的例子
cmake_minimum_required(VERSION 3.13) project(test C) set(CMAKE_C_STANDARD 99) find_package(OpenMP) if (OPENMP_FOUND) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") endif() add_executable(test main.c)
然后,我们编写一个测试程序
#include <stdio.h> int main(){ #pragma omp parallel for for(int i=0;i<10;i++){ printf("%i\n",i); } return 0; }
运行后,应该可以看到乱序输出的数字,代表OpenMP运行成功