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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top