【发布时间】: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 && cd build && cmake .. && 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