首先,安装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运行成功
牛逼
牛逼