34

Qmake 项目文件中是否有“win64”标识符?Qt Qmake高级文档除了unix/macx/win32之外没有提到。

到目前为止,我已经尝试使用:

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

结果总是“使用win32”。

我必须为 x32 和 x64 项目使用单独的项目文件,以便它们可以针对正确的库进行编译吗?有没有其他方法可以识别 32 位和 64 位环境?

4

5 回答 5

35

我这样做

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

    }
}
于 2010-04-17T11:25:38.860 回答
32

从 Qt5 开始,您可以使用QT_ARCH来检测您的配置是 32 还是 64。当目标是 32 位时,返回i386,如果是 64 位目标,它的值为x86_64. 所以它可以像这样使用:

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}
于 2015-06-09T05:47:04.343 回答
11

更新:最近以来,Qt 有一种透明且轻松的方式,无需手动操作:

win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    do something
}

来源:全新的 Qt Dev FAQ

于 2010-04-24T10:18:17.963 回答
2

我想出了一种方法来做到这一点。

Qt 允许您传递可用于分隔目标的任意配置参数。

通过在项目文件中进行条件配置:

CONFIG(myX64, myX64|myX32) {
    LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
    LIBPATH += C:\Coding\MSSDK60A\Lib
}

并将该自定义配置传递给qmakewith

qmake CONFIG+=myX64

你得到想要的结果。

于 2009-01-01T09:58:20.167 回答
0

不,但是您可以创建和使用新的 mkspec,我认为 qmake 还定义了一个以当前 mkspec 命名的平台标识符。为什么需要测试 64 位?

芦苇

于 2008-12-10T19:44:24.960 回答