c++ - 如何在 CLion 中设置基本的 openMP 项目

标签 c++ cmake mingw openmp clion

<分区>

我正在尝试在 CLion IDE 中运行简单的 OpenMP 程序。 当我运行它时,出现错误:

CMakeFiles\openmp_test_clion.dir/objects.a(main.cpp.obj): In function `main':
D:/.../openmp_test_clion/main.cpp:9: undefined reference to 'omp_get_thread_num'
collect2.exe: error: ld returned 1 exit status

这是我的代码:

#include <stdio.h>
#include <omp.h>

int main()
{
    int id;
#pragma omp parallel private(id)
    {
        id = omp_get_thread_num();
        printf("%d: Hello World!\n", id);
    }
    return 0;
}

这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(openmp_test_clion)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(openmp_test_clion ${SOURCE_FILES})

message(STATUS "Checking OpenMP")
find_package(OpenMP)
IF(OPENMP_FOUND)
    message("Found OpenMP!)
    # add flags for OpenMP
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_SHARED_LINKER_FLAGS}")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
ELSE()
    message("Missed OpenMP!")
ENDIF()

这是我的工具链的屏幕: enter image description here

我对 OpenMP 的经验为零,而且我是 C++ 的初级程序员,所以请给我一些关于如何设置我的项目的解释。

最佳答案

所以过了一段时间我想通了。我更改了 CmakeLists.txt 如下:

cmake_minimum_required(VERSION 3.6)
project(openmp_test_clion)

# added -fopenmp
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fopenmp")

set(SOURCE_FILES main.cpp)
add_executable(openmp_test_clion ${SOURCE_FILES})

我需要通过 TDM-GCC installer 安装 openmp .

关于c++ - 如何在 CLion 中设置基本的 openMP 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531078/

相关文章:

c++ - 在 C++ 中使用类的链表

Makefile, "configure"文件和其他编译工具-它们如何工作?他们为什么按照自己的方式工作?

python - os.system() 内联表达式没有改变我的路径

git - 结合mingw和git

c++ - C++ 中变量、方法等的良好命名约定是什么?

c++ - 返回引用参数

c++ - 无法打开fstream C++文件,即使它与.cpp位置相同

在 cmake 中包含头文件

c++ - 如何将参数传递给 cmake 进行的 makedepend 调用?

Ruby 和 SWIG 与 CMake