Identifier for win64 configuration in Qmake

五迷三道 提交于 2019-12-17 15:54:21

问题


Is there a "win64" identifier in Qmake project files? Qt Qmake advanced documentation does not mention other than unix / macx / win32.

So far I've tried using:

win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")

The result is always "using win32".

Must I use a separate project-file for x32 and x64 projects, so they would compile against correct libraries? Is there any other way to identify between 32-bit and 64-bit environments?


回答1:


I do it like this

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

    }
}



回答2:


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")
}



回答3:


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




回答4:


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.




回答5:


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



来源:https://stackoverflow.com/questions/356666/identifier-for-win64-configuration-in-qmake

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!