首页 > 解决方案 > 使用 clang 或 gcc 对 Mac 的 OpenMP 支持

问题描述

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

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

谢谢你的帮助!

标签: c++gcccmakeclangopenmp

解决方案


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

我没有改变main.cppand CMakeList.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/


推荐阅读