c++ - 使用 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++ 解决,该怎么做?
谢谢你的帮助!
解决方案
我通过将默认编译器更改为 g++ 解决了我的问题。(注意:我已经从 Homebrew 安装了 gcc/g++ 和 OpenMP 库。)
我没有改变main.cpp
and 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/
。
推荐阅读
- css - css的循环动画
- android - 如何使用 NavigationView 在工具栏中添加另一个图标
- bash - 在bash中按字典顺序比较两个包含'_'的字符串
- javascript - 如何在 Angular 9 项目中安装 request-promise
- java - 如何从字节数组创建输出文件,以便在打开输出文件时,显示的数据与字节数组中的数据相同?
- javascript - 即使我遵循了许多使用相同代码的示例,this.setState is not a function 错误仍然存在
- character - 制表符是否被视为一个字符?
- c# - 将现有的自动化测试结果与 TFS 手动测试联系起来
- arrays - 获取角度/打字稿上的地图值
- asp.net - 是否可以在 Asp.Net Core 中使用 Asp.Net Membership 而无需重置密码?