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)

参考

相关推荐
Rabitebla3 小时前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
system_error_x3 小时前
C++ 编程基础入门教程
开发语言·c++
Khalil三省5 小时前
MacBook 刘海显示歌词:让 Mac 也有灵动岛歌词
macos·开源·效率工具·音乐
布莱克6055 小时前
A* 算法详解:从原理到实现
开发语言·c++·算法
多弗朗皮卡丘5 小时前
C++ 智能指针
开发语言·c++·c++11·智能指针
进化中的刀盾兽6 小时前
从零实现 C++ AI 大模型接入 SDK(十):SessionManager 会话管理与多轮对话实现
c++
小成202303202656 小时前
C++~02运算符重载
开发语言·c++
郑同学的笔记7 小时前
【c++随笔30】C++ 注册回调函数
开发语言·c++
lengxuenong7 小时前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法
十二7 小时前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯