Я пытаюсь ввести OMP-распараллеливание в мое приложение C ++ Qt, и мне не удается скомпилировать его под macOS. Коллеги используют Windows или Linux, и у них все работает нормально. Что мне нужно написать в .pro-файле Qt и сделать в моей системе?
Ни один из подобных вопросов на этом или любом другом сайте не решил мою проблему. Я обычно компилирую с помощью предоставленного Apple clang, но, похоже, OMP-поддержки для этого нет. Итак, я установил clang с llvm через homebrew, настроил свой комплект в 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: я использую qmake через кнопку воспроизведения в Qt creator.
Ссылка: 1 , 2 , 3 , 4 и многие другие.