mac 上使用 cmake 构建包含 OpenMP 的项目

安装依赖

bash 复制代码
# clang 默认不支持 -fopenmp,因为它没有内置 OpenMP 支持。
# 为了解决这个问题,需要安装 libomp 并配置 clang 使用 libomp
brew install libomp

# macOS 自带的 clang 编译器被修改过,默认禁用了 OpenMP,
# 而不支持 -fopenmp 选项,因此无法直接进行多线程并行化编译。
# 安装 LLVM 后,可以获得一个完整的、支持 OpenMP 的 clang 编译器版本。
brew install llvm

配置

我的终端是 zsh,如果你的终端是 bash,你就要写进 ~/.bashrc

bash 复制代码
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
echo 'export cc="/opt/homebrew/opt/llvm/bin/clang"' >> ~/.zshrc
echo 'export cxx="/opt/homebrew/opt/llvm/bin/clang++"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"' >> ~/.zshrc 
echo 'export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"' >> ~/.zshrc

source ~/.zshrc

CMakeLists.txt

我用 cmake 的 find_package(OpenMP REQUIRED)会有问题:

因此我直接手动指定相关的编译编译、链接路径、头文件路径了。

c 复制代码
cmake_minimum_required(VERSION 3.28)
project(openmp_learn)

set(CMAKE_CXX_STANDARD 17)

include_directories(/opt/homebrew/opt/libomp/include)

add_executable(openmp_learn main.cpp)
target_compile_options(openmp_learn PRIVATE -Xpreprocessor -fopenmp)
target_link_libraries(openmp_learn PRIVATE /opt/homebrew/opt/libomp/lib/libomp.dylib)

参考

相关推荐
玖釉-9 小时前
二叉树展开为链表:从先序遍历到原地指针重排
c++·windows·算法·leetcode·链表
Mister西泽10 小时前
C++ Primer Plus 第六版 编程练习题及详细答案
开发语言·c++·学习·visual studio
Qt程序员10 小时前
从上电到系统就绪:ARM+U-Boot 嵌入式 Linux 启动流程
linux·运维·c++·内核·设备树·嵌入式·ram
cany100011 小时前
C++ -- lambda捕获
c++
Kilicc_12 小时前
C++知识点—03 <C++宏代码生成/宏反射写法>
c++
RuiZN13 小时前
UE5 UObject类详解
c++·ue5
ZhangShao060713 小时前
题解:AT_abc459_e
c++
chengO_o14 小时前
AVL树详解与实现(C++)
数据结构·c++·avl树·平衡二叉搜索树
玉树临风ives14 小时前
atcoder ABC 458 题解
数据结构·c++·算法
chengO_o14 小时前
STL关联式容器:map 与 set 的使用
c++·stl·set·map·平衡二叉搜索树