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)

参考

相关推荐
码小猿的CPP工坊21 分钟前
C++软件开发之内存泄漏闭坑方法
开发语言·c++
Benny_Tang24 分钟前
题解:CF2164C Dungeon
c++·算法
青小莫1 小时前
C语言vsC++中的动态内存管理(内含底层实现讲解!)
java·c语言·c++
开开心心_Every2 小时前
免费窗口置顶小工具:支持多窗口置顶操作
服务器·前端·学习·macos·edge·powerpoint·phpstorm
持梦远方2 小时前
算法剖析1:摩尔投票算法 ——寻找出现次数超过一半的数
c++·算法·摩尔投票算法
AI视觉网奇2 小时前
ue5 自定义 actor ac++ actor 用法实战
java·c++·ue5
明洞日记2 小时前
【软考每日一练002】进程调度机制详解
c++·ai·操作系统·进程
FMRbpm3 小时前
树的练习6--------938.二叉搜索树的范围和
数据结构·c++·算法·leetcode·职场和发展·新手入门
C+-C资深大佬3 小时前
C++数据类型
开发语言·c++·算法
初次见面我叫泰隆4 小时前
Qt——1、初识Qt
开发语言·c++·qt