Qt5 Conditions cibles introuvables
Je viens de mettre à jour la dernière version des outils de ligne de commande dans OS X Mavericks et maintenant lors de la compilation de mon code (qui fonctionnait auparavant), il génère l'erreur suivante
> 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"
Est-ce que quelqu'un sait que si vous changez cette ligne
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
Du sdk 8 à 9 fonctionnerait? Si oui, où dans les paramètres de Qt5 puis-je changer cela?
12 réponses
Pour la référence d'autres personnes, j'ai résolu le problème en éditant mon fichier mkspec de plate-forme:
/utilisateurs/nic/Qt/5.3/clang_64/mkspecs/qdevice.pri
Modifiez la ligne suivante:
!host_build:QMAKE_MAC_SDK = macosx10.8
À ceci:
!host_build:QMAKE_MAC_SDK = macosx10.9
Assurez-vous de nettoyer votre projet et exécutez à nouveau qmake.
Nic.
Il est également possible de compiler le projet en ajoutant la ligne suivante au fichier .pro
QMAKE_MAC_SDK = macosx10.9
Si vous compilez dans D'autres plates-formes que OS X, une amélioration de la solution BRabbit27 serait:
macx {
QMAKE_MAC_SDK = macosx10.9
}
Je viens de passer à XCode 9 et j'ai commencé à avoir ce problème sur macOS Sierra (10.12). Le problème est que Xcode a déplacé le lien symbolique par défaut à 10.13. Pour corriger:
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk MacOSX10.12.sdk
A eu le même problème dans Qt 5.5, MacOS 10.10.4. Je l'ai enlevé .qmake.conf et .qmake.stash du répertoire du projet.
J'ai découvert que le fichier ".qmake.cache " dans mon projet root avait une référence à Mac OS 10.8. La solution consistait à supprimer le fichier et à construire le projet à partir de zéro.
J'ai installé Qt 5.9.1 avant D'installer Xcode 10.13. Depuis que j'ai mis à jour le Xcode, un message d'erreur avec l'avertissement suivant a commencé à apparaître.
:-1: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk' [-Wmissing-sysroot]
J'ai résolu le problème en changeant la ligne suivante
QMAKE_MAC_SDK = macosx
À
QMAKE_MAC_SDK = macosx10.13
Dans le fichier suivant:
path_where_I_installed_qt/Qt/5.9.1/clang_64/mkspecs/qdevice.pri
J'espère que cela fonctionne pour vous.
Pour moi, la suppression manuelle du contenu du répertoire de sortie a résolu le problème (Qt 5.9, Xcode9, MacOS 10.12.6). Le nettoyage / reconstruction a laissé des choses corrompues.
Pour Qt 5.8 et iOS build j'ai ajouté un lien symbolique au sdk dans les dossiers 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
J'utilise Qt5. 8 sur macosx10.13, j'ai résolu ce problème en éditant le fichier /usr/local/Cellar/qt-legacy-formula/5.8.0_1/mkspecs/qdevice.pri en ajoutant cette ligne:
!host_build:QMAKE_MAC_SDK = macosx10.13
Je voulais juste commenter cela en ajoutant mon expérience. J'ai récemment mis à jour à High Sierra, XCode 9.2 et Qt5. 10 et le message de licence XCode me conduisait batty!
Dans qdevice.pri j'ai changé
QMAKE_MAC_SDK = macosx
À
QMAKE_MAC_SDK = macosz10. 13
Mais ce n'était pas tout ce dont j'avais besoin. J'ai du enlevé le .qmake.stash et Makefile fichiers du répertoire de construction. Je ne suis pas sûr de supprimer le Makefile était nécessaire, mais je l'ai fait quand même. Ensuite, j'ai supprimé les fichiers*. pro. user afin que je puisse forcer une reconfigure par QtCreator. Cela m'a forcé ou laissez-moi sélectionner la version mise à jour de Qt. Avant cela, je pense qu'il essayait d'utiliser les anciennes versions de stuff. Donc, nettoyer toutes les références à l'ancien contenu de votre projet et sélectionner le nouveau est important.
Méthode 1
Ce genre d'erreur apparaîtra chaque fois que vous mettez à niveau Xcode
Ainsi, vous pouvez supprimer le fichier cache dans qt avant de construire ou simplement supprimer lorsque vous obtenez l'erreur
rm {your target build folder}/.qmake.stash
Ou
rm {your project folder}/.qmake.stash
Si vous ne savez pas où trouver .qmake.stash
, essayez
find ~ -name .qmake.stash
Méthode 2
Ne recommande pas parce que vous pourriez obtenir une erreur de construction lorsque vous utilisez Xcdoe APP
IphoneOS
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
sudo ln -s iPhoneOS.sdk iPhoneOS{version}.sdk
IPhoneSimulator
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
sudo ln -s iPhoneSimulator.sdk iPhoneSimulator{version}.sdk