- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图在我的 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。
最佳答案
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
}
关于c++ - 如何在 macOS 上的 Qt 中使用 OpenMP 进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575428/
我是一名优秀的程序员,十分优秀!