Ответ 1
Можно также скомпилировать проект, добавив следующую строку в файл .pro
QMAKE_MAC_SDK = macosx10.9
Я только что обновил до последней версии инструментов командной строки в OS X Mavericks, а теперь, когда компилирую мой (ранее работающий) код, он выдает следующую ошибку
> clang: warning: no such sysroot directory:
> '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk'
> In file included from ../QtOpenGL/Main.cpp:1: In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
> In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qcoreapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qglobal.h:76:
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qsystemdetection.h:196:12:
> fatal error: 'TargetConditionals.h' file not found
> # include <TargetConditionals.h>
> ^ 1 error generated. make: *** [Main.o] Error 1 20:29:52: Le processus "/usr/bin/make" s'est terminé avec le code 2. Erreur lors
> de la compilation/déploiement du projet QtOpenGL (kit : Desktop Qt
> 5.3.0 clang 64bit) When executing step "Make"
Кто-нибудь знает, что если изменить эту строку
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
от sdk 8 до 9 будет работать? Если да, то где в параметрах Qt5 я могу изменить это?
Можно также скомпилировать проект, добавив следующую строку в файл .pro
QMAKE_MAC_SDK = macosx10.9
Для справки других людей я решил проблему, отредактировав файл mkspec моей платформы:
/users/nic/Qt/5.3/clang_64/mkspecs/qdevice.pri
измените следующую строку:
!host_build:QMAKE_MAC_SDK = macosx10.8
:
!host_build:QMAKE_MAC_SDK = macosx10.9
Обязательно очистите проект и снова запустите qmake.
Nic.
Если вы компилируете на других платформах, чем OS X, улучшение решения BRabbit27 будет:
macx {
QMAKE_MAC_SDK = macosx10.9
}
Была та же проблема в Qt 5.5, MacOS 10.10.4. Я удалил .qmake.conf и .qmake.stash из каталога проекта.
Я просто обновился до XCode 9, и я начал получать эту проблему на macOS Sierra (10.12). Проблема в том, что Xcode перенесла символическую ссылку по умолчанию на 10.13. Исправить:
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk MacOSX10.12.sdk
Я узнал, что файл ".qmake.cache" в корне моего проекта имеет ссылку на Mac OS 10.8. Решение заключалось в том, чтобы удалить файл и построить проект с нуля.
Я установил Qt 5.9.1 перед установкой Xcode 10.13. Поскольку я обновил Xcode, появилось сообщение об ошибке со следующим предупреждением.
:-1: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk' [-Wmissing-sysroot]
Я решил проблему изменения следующей строки
QMAKE_MAC_SDK = macosx
к
QMAKE_MAC_SDK = macosx10.13
в следующем файле:
path_where_I_installed_qt/Qt/5.9.1/clang_64/mkspecs/qdevice.pri
Я надеюсь, что это сработает для вас.
Для сборки Qt 5.8 и iOS я добавил символическую ссылку на sdk в папках XCode:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
ln -s iPhoneOS.sdk iPhoneOS10.0.sdk
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
ln -s iPhoneSimulator.sdk/ iPhoneSimulator10.2.sdk
Для меня удаление содержимого выходного каталога вручную исправило проблему (Qt 5.9, Xcode9, MacOS 10.12.6). Уборка/Восстановление действительно оставили некоторые коррумпированные вещи.
Я использую Qt5.8 на macosx10.13, я решил эту проблему, отредактировав файл /usr/local/Cellar/qt -legacy-formula/5.8.0_1/mkspecs/qdevice.pri, добавив эту строку:
!host_build:QMAKE_MAC_SDK = macosx10.13
Я просто хотел прокомментировать это, добавив свой опыт. Недавно я обновился до High Sierra, XCode 9.2 и Qt5.10, и лицензионное сообщение XCode привело меня в смятение!
В qdevice.pri я изменил
QMAKE_MAC_SDK = macosx
to
QMAKE_MAC_SDK = macosz10.13
но это было не все, что мне было нужно. Мне пришлось удалить файлы .qmake.stash и Makefile из каталога сборки. Я не уверен, что удаление Makefile было необходимо, но я все равно это сделал. Затем я удалил файлы *.pro.user, чтобы я мог заставить перенастроить QtCreator. Это заставило меня или позволить мне выбрать обновленную версию Qt. До этого я думаю, что он пытался использовать старые версии вещей. Таким образом, очистка всех ссылок на старый материал в вашем проекте и выбор нового важны.