Qmake中win64配置的标识符

时间:2008-12-10 16:28:55

标签: windows qt 64-bit qt4 qmake

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

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

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

结果总是“使用win32”。

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

5 个答案:

答案 0 :(得分:29)

我这样做

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

    }
}

答案 1 :(得分:21)

从Qt5开始,您可以使用`count(fa`.`id)` 来检测您的配置是32还是64.当目标是32位时,返回QT_ARCH,如果是64位目标,则返回i386x86_64。所以它可以像:

一样使用
contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}

答案 2 :(得分:9)

更新:从最近开始,Qt就可以透明,轻松地完成这项工作,无需人工麻烦:

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

来源:the brand new Qt Dev FAQ

答案 3 :(得分:2)

我找到了一种方法。

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

在项目文件中设置条件配置:

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

并使用

将该自定义配置传递给qmake
qmake CONFIG+=myX64

你得到想要的结果。

答案 4 :(得分:0)

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

里德