Identifiant pour la configuration win64 dans Qmake
Y a - t-il un identifiant" win64 " dans les fichiers de projet Qmake? qt qmake advanced la documentation ne mentionne pas autre que unix / macx / win32.
Jusqu'à présent, j'ai essayé d'utiliser:
win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")
Le résultat est toujours "en utilisant win32".
Dois-je utiliser un fichier de projet séparé pour les projets x32 et x64, afin qu'ils compilent contre les bibliothèques correctes? Existe-t-il un autre moyen d'identifier entre les environnements 32 bits et 64 bits?
5 réponses
Je le fais comme ceci
win32 {
## Windows common build here
!contains(QMAKE_TARGET.arch, x86_64) {
message("x86 build")
## Windows x86 (32bit) specific build here
} else {
message("x86_64 build")
## Windows x64 (64bit) specific build here
}
}
Depuis Qt5 vous pouvez utiliser QT_ARCH
) pour détecter si votre configuration est 32 ou 64. Lorsque la cible est 32 bits, cela renvoie i386
et dans le cas d'une cible 64 bits, elle a la valeur x86_64
. Donc, il peut être utilisé comme:
contains(QT_ARCH, i386) {
message("32-bit")
} else {
message("64-bit")
}
Mise à jour: depuis très récemment, Qt a une façon de le faire de manière transparente et facilement, sans tracas manuels:
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
do something
}
Source: la toute nouvelle FAQ Qt Dev
J'ai trouvé une façon de le faire.
Qt vous permet de passer des paramètres de configuration arbitraires que vous pouvez utiliser pour séparer les cibles.
En ayant une configuration conditionnelle dans votre fichier de projet:
CONFIG(myX64, myX64|myX32) {
LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
LIBPATH += C:\Coding\MSSDK60A\Lib
}
Et en passant cette configuration personnalisée à qmake
avec
qmake CONFIG+=myX64
Vous obtenez le résultat recherché.
Non, mais vous pouvez créer et utiliser un nouveau mkspec, je pense que qmake définit également un identifiant de plate-forme nommé d'après le mkspec actuel. Pourquoi avez-vous besoin de tester pour 64 bits?
Roseau