在 CLion 中设置 OpenMP 项目 MacOS Mojave

Posted

技术标签:

【中文标题】在 CLion 中设置 OpenMP 项目 MacOS Mojave【英文标题】:Set the OpenMP project MacOS Mojave in CLion 【发布时间】:2020-05-09 14:04:05 【问题描述】:

我正在尝试在带有 macOS Mojave 的 Mac 上使用 OpenMP 在 C++ 中执行我的作业。但它失败了。 Mac 是新的,所以所有设置都没有改变。我做了什么:

    我安装了 Homebrew。 我安装了 llvm (brew install llvm) 我安装了 omp (brew install libomp)

另外,在我拥有的项目的 CMakeLists.txt 中

cmake_minimum_required(VERSION 3.5.1)
project(...)

include_directories("/usr/local/include" "/usr/local/opt/llvm/include")
link_directories("/usr/local/lib" "/usr/local/opt/llvm/lib")
set(CMAKE_CXX_COMPILER /usr/local/opt/llvm/bin/clang++)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -march=native -fopenmp -O3")

add_executable(...)

在终端“clang -v”中:

Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

'gcc -v':

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

在 CLion 中我有这个错误:

[ 25%] Linking CXX executable search
ld: unknown option: -platform_version
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [search] Error 1
make[2]: *** [CMakeFiles/search.dir/all] Error 2
make[1]: *** [CMakeFiles/search.dir/rule] Error 2
make: *** [search] Error 2

我重新阅读了很多论坛,但我仍然不明白问题可能是什么。

【问题讨论】:

当你的CMakeLists.txt 说你的编译器是/usr/local/opt/llvm/bin/clang++ 时,你为什么要在终端中运行clang -vgcc -v 我只是想告诉你我使用的是什么版本的clang和gcc,可能是我的错误.. 您在终端中获得的版本输出来自 Apple 的命令行 LLVM 编译器,而不是 Homebrew 安装的编译器。 Homebrew 从不在/usr/local 之外安装任何东西(除了木桶),clang -v 明确报告安装在/Library/Developer/CommandLineTools 中。 【参考方案1】:

一定要调用Xcode预处理器来处理OMP。

C++ 标志应包括: -Xpreprocessor -fopenmp -lomp -I/usr/local/include

LDFLAGS 应包括: -lomp

使用 cmake,您可以将它们添加到您的命令中: cmake -DCMAKE_CXX_FLAGS="-Xpreprocessor -fopenmp -lomp -I/usr/local/include" -DCMAKE_EXE_LINKER_FLAGS="-lomp" ..

或者您可以将它们添加到您的CMakeLists.txt

【讨论】:

AppleClang 没有问题,它通过 Xcode 预处理器与 OpenMP 一起工作。

以上是关于在 CLion 中设置 OpenMP 项目 MacOS Mojave的主要内容,如果未能解决你的问题,请参考以下文章

在 CLion 和 Cmake 中设置外部头文件和链接器库的问题 [重复]

如何从程序中设置 OpenMP 线程的数量?

Mac中设置Sublime快速在终端中使用命令打开项目

如何在 Xcode 中设置 Mac 应用程序的图标?

在mac中设置ANDROID_HOME环境变量

从库 C++ 中设置环境变量