【问题标题】:Compile an OpenMP program with CMake on OS X在 OS X 上使用 CMake 编译 OpenMP 程序
【发布时间】:2016-08-22 20:23:00
【问题描述】:

我有一个非常简单的 openmp hello world 程序:

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

int main()
{
#pragma omp parallel
    {
        int id = omp_get_thread_num();
        printf("hello, from %d.\n", id);
    }
    return 0;
}

我可以用gcc-5 -fopenmp hello.c -o hello.o在我的终端编译它

但我想在CLion中编码,它使用CMake来组织项目,当我点击运行按钮时,我会得到一个错误

fatal error: 'omp.h' file not found
#include <omp.h>

我确实在 google 中搜索过,并在我的 CMakeLists.txt 文件中添加了一些内容

这是我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.3)
project(openmp)

OPTION (USE_OpenMP "Use OpenMP" ON)
IF(USE_OpenMP)
    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}")
ENDIF()
ENDIF()

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

set(SOURCE_FILES hello.c omp.c)
add_executable(openmp ${SOURCE_FILES})

【问题讨论】:

    标签: cmake openmp


    【解决方案1】:

    您的代码是 C,而不是 C++,所以不要更改 CMAKE_CXX_FLAGS,而是更改 CMAKE_C_FLAGS

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
    

    并将你的 C 编译器设置为 gcc-5:

    set(CMAKE_C_COMPILER /your/path/to/gcc-5)
    

    要知道 gcc-5 路径,在终端中输入which gcc-5

    另请参阅:How to specify new gcc path for cmake

    【讨论】:

    • 感谢您的回答!我已将此行添加到我的 CMakeList 文件中,但我仍然收到此错误 clang: error: unsupported option '-fopenmp' 我知道可能 clion 使用默认 gcc,它需要是 gcc-5 ,所以你能告诉我如何修改以使其工作,再次感谢
    • CLion 使用来自 CMake 的 GCC 集。因此,如果您使用与 GCC 5 对齐的 CMake,CLion 也会使用它。所以是的,只要按照上面的答案。
    猜你喜欢
    • 2015-05-17
    • 2016-05-22
    • 2011-07-08
    • 2015-11-24
    • 1970-01-01
    • 2011-01-20
    • 2013-02-15
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多