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?

27
demandé sur Kurt W. Leucht 2008-12-10 19:28:54

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

    }
}
27
répondu did 2014-04-10 19:26:58

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")
}
16
répondu Nejat 2015-06-09 05:58:32

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

9
répondu rubenvb 2010-07-06 12:47:01

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é.

2
répondu Tuminoid 2011-07-05 09:54:51

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

0
répondu Reed Hedges 2008-12-10 19:44:24