C++ 在Windows上使用openMP和CLION编译程序

C++ 在Windows上使用openMP和CLION编译程序,c++,openmp,clion,C++,Openmp,Clion,我已经使用cygwin下载了openMP,我在CLION中使用cygwin作为编译器 我包括 #include <omp.h> 但是,当我使用omp_get_max_线程时,它会抛出 未定义对“omp\u get\u max\u threads”的引用 错误,我试图添加编译器参数: 但错误依然存在。有没有办法解决这个问题?感谢您的帮助。CLion使用CMake作为构建系统,CMake 3.9+对OpenMP的支持得到了极大的改进。现在,您需要按如下方式配置CMakeLists.t

我已经使用cygwin下载了openMP,我在CLION中使用cygwin作为编译器

我包括

#include <omp.h>
但是,当我使用omp_get_max_线程时,它会抛出

未定义对“omp\u get\u max\u threads”的引用

错误,我试图添加编译器参数:

但错误依然存在。有没有办法解决这个问题?感谢您的帮助。

CLion使用CMake作为构建系统,CMake 3.9+对OpenMP的支持得到了极大的改进。现在,您需要按如下方式配置CMakeLists.txt文件:

例如,考虑下面的示例代码。

OpenMP代码
如果您不熟悉CMake,.

我不是CLION的用户,但是程序参数真的是编译代码的编译器参数吗

通常,在编译OpenMP源文件时,需要将-fopenmp标志添加到编译器和链接器中。例如:

gcc -fopenmp -c foo.c -o foo.o
gcc -fopenmp -c bar.c -o bar.o
gcc -fopenmp -o app.exe foo.o bar.o
或者,如果您仅使用一个源文件进行编译和链接:

gcc -fopenmp -c fooc -o app.exe

PS:有一个输入错误,它应该是pragma omp parallel,而不是pragma omp paraller。

事实上,在构建过程中,不应该将标志-fopenmp添加到参数中,而是添加到内部参数中。答案与此处相同:@MarineGalantin here,这是一个建议而不是答案。
cmake_minimum_required(VERSION 3.9)
project(openmp_test) # you can change the project name

find_package(OpenMP)

add_executable(openmp_para_test main.cpp)

if(OpenMP_CXX_FOUND)
    target_link_libraries(openmp_para_test PUBLIC OpenMP::OpenMP_CXX)
endif()
gcc -fopenmp -c foo.c -o foo.o
gcc -fopenmp -c bar.c -o bar.o
gcc -fopenmp -o app.exe foo.o bar.o
gcc -fopenmp -c fooc -o app.exe