如何在macOS上的Qt中使用OpenMP进行编译?

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

我试图在我的C ++ Qt应用程序中引入一些OMP并行化,但是我无法在macOS下进行编译。同事们正在使用Windows或Linux,并且一切工作正常。我需要在Qt的.pro文件中写什么并在系统中做什么?

此站点或其他任何站点上的类似问题都没有解决我的问题。我通常使用Apple提供的clang进行编译,但似乎对此没有OMP支持。因此,我已经通过自制软件在llvm中安装了clang,相应地在Qt中安装了我的工具包,还尝试了.pro文件中以下各行的排列:

QMAKE_CXXFLAGS += -fopenmp
QMAKE_LFLAGS += -fopenmp
QMAKE_LINK = /usr/local/Cellar/llvm/9.0.0/bin/clang-9
QMAKE_CC = /usr/local/Cellar/llvm/9.0.0/bin/clang-9
QMAKE_CXX = /usr/local/Cellar/llvm/9.0.0/bin/clang-9
LIBS += -fopenmp
LIBS += -L/usr/local/lib/

尽管有了这些,我遇到了许多导致symbol(s) not found for architecture x86_64的怪异问题,也没有指向clang-9的任何一行,但这仍然是我能达到的最佳效果。没有最后一行,我得到library not found for -lomp,没有QMAKE_LINK行unsupported option '-fopenmp'

我在网上找到的针对这些错误消息的所有可能解决方案均无济于事。libomp.dylib已安装并链接到/usr/local/lib。我也在GCC上尝试了整个过程,但也没有成功。

这已经困扰了我三天,我真的希望可以解决这个问题。可以这么难吗?不打扰Windows / Linux兼容性的解决方案将是最佳选择。

PS:我通过Qt Creator中的播放按钮使用qmake。

参考:1234等。

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

AppleClang应该可以正常工作。确保通过.pro文件调用预处理器来处理OMP。


macx: {
QMAKE_CXXFLAGS += -Xpreprocessor -fopenmp -lomp -I/usr/local/include
}

macx: {
QMAKE_LFLAGS += -lomp
}

macx: {
LIBS += -L /usr/local/lib /usr/local/lib/libomp.dylib
}

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