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)

参考

相关推荐
我不是懒洋洋22 分钟前
从零实现一个分布式日志平台:ELK的核心设计
c++
神仙别闹41 分钟前
基于QT(C++)实现Windows 自启动项查看和分析
c++·windows·qt
寒水馨43 分钟前
macOS下载、安装scrcpy-v4.1(附安装包scrcpy-macos-aarch64-v4.1.tar.gz)
macos·adb·手机控制·scrcpy·投屏软件·android投屏·屏幕镜像
WWTYYDS_6661 小时前
ProtoBuf超详细使用教程
c++
野生风长1 小时前
c++类和对象(this指针,重载operator,习题总结)
java·开发语言·c++
雪的季节2 小时前
Python「假多态」与 C++「真多态」的核心区别
开发语言·c++
zmzb01032 小时前
C++课后习题训练记录Day166
开发语言·c++
皓月斯语2 小时前
程序设计语言的特点
开发语言·数据结构·c++
邪修king3 小时前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++
梓䈑8 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先