Identifier for win64 configuration in Qmake

我是研究僧i 提交于 2019-11-27 20:27:47
did

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

    }
}

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

Tuminoid

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

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