Qt 创建者中的 MacOS fopenmp:使用 openMP

问题描述 投票:0回答:1

我正在尝试在 Qt Creator 的 QT 项目中使用 openMP。我有一个使用以下 QMake 标志设置的项目

QMAKE_CXXFLAGS+= -fopenmp -Wall~
LIBS += -fopenmp
。经过几天的谷歌搜索后,我遇到了提到使用不同编译器或使用
Xclang
的建议,并且我尝试了这些方法:使用 clang++、clang、GCC、LLVM 来尝试编译,但它只是产生相同的结果所有人的错误,提到
clang: error: unsupported option '-fopenmp

我想知道是否有什么方法可以编译这个?

c++ macos qt clang openmp
1个回答
0
投票

以下是为您提供的分步解决方法:

  1. 通过 Homebrew 获取 OpenMP:

    首先,请确保您的系统上有 OpenMP 库。如果缺少,请轻推一下 Homebrew:

    brew install libomp
    

    这将为您带来 OpenMP 的 LLVM 风格,这是一件好事。

  2. 调整 .pro 文件

    您需要向编译器提供有关新安装的 OpenMP 的提示:

    QMAKE_CXXFLAGS += -Xpreprocessor -fopenmp
    LIBS += -lomp
    

    那个奇特的

    -Xpreprocessor
    旗帜?它基本上是告诉编译器,“嘿,将
    -fopenmp
    传递给预处理器,好吗?”

  3. 选择正确的工具

    如果情况仍然不理想,请考虑安装完整的 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++
    放松。

  4. 引导路径

    有时,您必须掌握编译器和链接器以确保它们找到必要的头文件和库。更新您的 .pro 文件:

    INCLUDEPATH += /usr/local/opt/llvm/include
    LIBS += -L/usr/local/opt/llvm/lib
    
  5. 再试一次

    完成所有这些更改后,调用

    qmake
    并让您的项目再次旋转。

总而言之,这里的主要问题是 Apple 的原生 Clang,它不是 OpenMP 的最佳伙伴。但是,通过一些 Homebrew 魔法和一些调整,您的 Qt 项目应该立即与 OpenMP 协调一致。快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.