Identificateur de configuration win64 dans Qmake
Question
Y at-il un identifiant « win64 » dans les fichiers de projet QMake? Qt Qmake avancé la documentation ne mentionne pas autre qu'Unix / macx / win32.
Jusqu'à présent, je l'ai essayé d'utiliser:
win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")
Le résultat est toujours "à l'aide win32".
Dois-je utiliser un fichier de projet distinct pour les projets x32 et x64, donc ils compilerions contre les bibliothèques correctes? Est-il un autre moyen d'identifier entre 32 bits et les environnements 64 bits?
La solution
Je fais comme ça
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
}
}
Autres conseils
Since Qt5 you can use QT_ARCH
to detect whether your configuration is 32 or 64. When the target is 32-bit, that returns i386
and in case of a 64-bit target it has the value of x86_64
. So it can be used like:
contains(QT_ARCH, i386) {
message("32-bit")
} else {
message("64-bit")
}
UPDATE: since very recently, Qt has a way of doing this transparently and easily, without manual hassle:
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
do something
}
Source: the brand new Qt Dev FAQ
I've figured out one way to do it.
Qt allows you to pass arbitrary config parameters which you can use to separate the targets.
By having a conditional config in your project file:
CONFIG(myX64, myX64|myX32) {
LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
LIBPATH += C:\Coding\MSSDK60A\Lib
}
and passing that custom config to qmake
with
qmake CONFIG+=myX64
you get the wanted result.
No, but you can create and use a new mkspec, I think qmake also defines a platform identifier named after the current mkspec. Why do you need to test for 64 bit?
Reed