【问题标题】:OpenMP support for Mac using clang or gcc使用 clang 或 gcc 对 Mac 的 OpenMP 支持
【发布时间】:2021-05-08 10:10:07
【问题描述】:

我使用的是 Mac OS,并使用 OpenMP 创建了一个玩具 CMake 项目。

main.cpp:

#include <iostream>
#include "omp.h"

using namespace std;

int main() {
    cout << "Hello, World!" << endl;

#pragma omp parallel
    cout << "Hello OpenMP from thread " << omp_get_thread_num() << endl;

    return 0;
}

CMakeList.txt:

cmake_minimum_required(VERSION 3.12)
project(omp_test)

set(CMAKE_CXX_STANDARD 14)

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

add_executable(omp_test main.cpp)

当我尝试mkdir build &amp;&amp; cd build &amp;&amp; cmake .. &amp;&amp; make -j 构建项目时,我得到了clang: error: unsupported option '-fopenmp'。它在 Ubuntu 上运行良好。如何更改 CMakeList.txt 以启用 OpenMP 支持?或者如果使用g++可以解决问题,该怎么做?

感谢您的帮助!

【问题讨论】:

  • 你确定你已经安装了openmp库吗?我不使用Mac,但我相信命令是brew install libomp
  • 除非您从 Homebrew 或源代码中安装了gcc,否则 macOS 上的 g++ 实际上是 Apples Clang++ 编译器的符号链接。它需要-Xclang -fopenmp 来启用 OpenMP 支持,但您还需要安装运行时。
  • @jignatius,@HristoIliev,感谢您的帮助。实际上我已经从 Homebrew 安装了 openmp 和 gcc。现在我知道解决问题的方法了。我刚刚使用cmake -DCMAKE_CXX_COMPILER=g++-9 .. 更改了默认编译器。
  • @Joxixi 如果您找到了方法,请与社区分享作为答案

标签: c++ gcc cmake clang openmp


【解决方案1】:

我通过将默认编译器更改为 g++ 解决了我的问题。 (注意:我已经安装了 gcc/g++ 和 Homebrew 的 OpenMP 库。)

main.cppCMakeList.txt我没有改,但是建项目的时候,我用

mkdir build && cd build && cmake -DCMAKE_CXX_COMPILER=g++-9 .. && make -j

然后错误clang: error: unsupported option '-fopenmp' 消失了。具体来说,我添加了选项-DCMAKE_CXX_COMPILER=g++-9 来更改默认编译器。可能你电脑上的g++版本不是g++-9,那你可以在/user/local/bin/路径下查看。

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多