web-dev-qa-db-fra.com

Qt5 Conditions conditionnelles non trouvées

Je viens de mettre à jour la dernière version des outils de ligne de commande sous OS X Mavericks et maintenant lors de la compilation de mon code (qui fonctionnait auparavant), l'erreur suivante est générée

> 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 changer cette ligne

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

de 8 à 9 sdk fonctionnerait? Si oui, où puis-je changer cela dans les paramètres de Qt5?

37
BRabbit27

Il est également possible de compiler le projet en ajoutant la ligne suivante au fichier .pro

QMAKE_MAC_SDK = macosx10.9
25
BRabbit27

Pour référence, j'ai résolu le problème en modifiant le fichier mkspec de la plateforme:

/users/nic/Qt/5.3/clang_64/mkspecs/qdevice.pri 

changez la ligne suivante:

!Host_build:QMAKE_MAC_SDK = macosx10.8

pour ça:

!Host_build:QMAKE_MAC_SDK = macosx10.9

Assurez-vous de nettoyer votre projet et d’exécuter à nouveau qmake.

Nic.

81
Nicolas Christiaens

Si vous compilez sur d'autres plates-formes que OS X, une amélioration de la solution BRabbit27 serait:

macx {
QMAKE_MAC_SDK = macosx10.9
}
10
asam

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 vers 10.13. Pour réparer:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
Sudo ln -s MacOSX.sdk MacOSX10.12.sdk
9
Pablo Diaz

Avait le même problème dans Qt 5.5, MacOS 10.10.4. J'ai supprimé .qmake.conf et .qmake.stash du répertoire du projet.

8
ceed

J'ai découvert que le fichier ".qmake.cache" dans la racine de mon projet faisait référence à Mac OS 10.8 . La solution consistait à supprimer le fichier et à construire le projet à partir de zéro.

6
Ralf Wirth

Pour moi, la suppression manuelle du contenu du répertoire de sortie a corrigé le problème (Qt 5.9, Xcode9, MacOS 10.12.6). Nettoyage/reconstruction a laissé des trucs corrompus.

3
memcpy

J'ai installé Qt 5.9.1 avant Xcode 10.13. Depuis que j'ai mis à niveau 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. 

3
mandroid

Je voulais juste faire un commentaire à ce sujet 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 rendait fou!

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 dû supprimer les fichiers .qmake.stash et Makefile du répertoire de construction. Je ne suis pas sûr que la suppression du Makefile était nécessaire, mais je l'ai quand même fait. Ensuite, j'ai supprimé les fichiers * .pro.user afin de pouvoir forcer une reconfiguration par QtCreator. Cela m'a forcé ou m'a laissé choisir la version mise à jour de Qt. Avant cela, je pense qu’il essayait d’utiliser les anciennes versions. Il est donc important de supprimer toutes les références aux anciennes données de votre projet et de sélectionner les nouvelles.

0
Wild Bill

J'utilise Qt5.8 sur macosx10.13, j'ai résolu ce problème en modifiant 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
0
IGUIDER Walid

Méthode 1

Ce type d'erreur apparaît chaque fois que vous mettez à niveau Xcode.

afin que vous puissiez supprimer le fichier de 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

Non recommandé 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
0
Zam

Pour Qt 5.8 et iOS, j'ai ajouté un lien symbolique à 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
0
Libor B.