我试图在我的C++ Qt应用程序中引入一些OMP并行化,但我无法在macOS下编译它。同事们使用的是Windows或Linux,对他们来说一切都很好。我需要在Qt的.pro文件中写什么,并在我的系统中做什么?
这个或任何其他网站上的类似问题都没有解决我的问题。我通常使用Apple提供的clang进行编译,但似乎没有对它的OMP支持。所以我已经通过homebrew安装了clang和llvm,相应地在Qt中设置了我的工具包,还尝试了我的.pro-file中以下行的每一种排列:
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兼容性的解决方案将是最好的。
附言:我是通过Qt creator的播放按钮来使用qmake的。
发布于 2019-10-27 07:45:37
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
}https://stackoverflow.com/questions/58575428
复制相似问题