我正在尝试在 Qt Creator 的 QT 项目中使用 openMP。我有一个使用以下 QMake 标志设置的项目
QMAKE_CXXFLAGS+= -fopenmp -Wall~
LIBS += -fopenmp
。经过几天的谷歌搜索后,我遇到了提到使用不同编译器或使用 Xclang
的建议,并且我尝试了这些方法:使用 clang++、clang、GCC、LLVM 来尝试编译,但它只是产生相同的结果所有人的错误,提到clang: error: unsupported option '-fopenmp
我想知道是否有什么方法可以编译这个?
以下是为您提供的分步解决方法:
通过 Homebrew 获取 OpenMP:
首先,请确保您的系统上有 OpenMP 库。如果缺少,请轻推一下 Homebrew:
brew install libomp
这将为您带来 OpenMP 的 LLVM 风格,这是一件好事。
调整 .pro 文件:
您需要向编译器提供有关新安装的 OpenMP 的提示:
QMAKE_CXXFLAGS += -Xpreprocessor -fopenmp
LIBS += -lomp
那个奇特的
-Xpreprocessor
旗帜?它基本上是告诉编译器,“嘿,将 -fopenmp
传递给预处理器,好吗?”
选择正确的工具:
如果情况仍然不理想,请考虑安装完整的 LLVM 套件。这个包有一个与 OpenMP 兼容的 Clang 友好版本:
brew install llvm
安装后,前往 Qt Creator。导航到
Tools > Options > Kits
,并确保您指向刚刚通过 Homebrew 获得的 Clang 版本。通常,他们会在 /usr/local/opt/llvm/bin/clang
及其兄弟姐妹 /usr/local/opt/llvm/bin/clang++
放松。
引导路径:
有时,您必须掌握编译器和链接器以确保它们找到必要的头文件和库。更新您的 .pro 文件:
INCLUDEPATH += /usr/local/opt/llvm/include
LIBS += -L/usr/local/opt/llvm/lib
再试一次:
完成所有这些更改后,调用
qmake
并让您的项目再次旋转。
总而言之,这里的主要问题是 Apple 的原生 Clang,它不是 OpenMP 的最佳伙伴。但是,通过一些 Homebrew 魔法和一些调整,您的 Qt 项目应该立即与 OpenMP 协调一致。快乐编码!