是否有Qmake工程文件“Win64的”标识? 的Qt QMAKE先进文件没有提到比UNIX / MACX / win32的其他。

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

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

结果始终为 “使用Win32”。

我必须使用一个单独的项目文件的x32或x64的项目,所以他们对编译正确的库?是否有任何其他方式的32位和64位环境之间鉴别?

有帮助吗?

解决方案

我不喜欢这样

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

    }
}

其他提示

由于QT5可以使用QT_ARCH检测的配置是否32或64。当目标是32位,即返回i386和在64位的情况下,针对其具有x86_64的值。因此,它可用于像:

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}

更新:自最近,Qt拥有透明和容易这样做的一种方式,无需人工麻烦:

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

来源:全新的Qt开发常见问题解答

我已经想通了如何做这件事的方式。

Qt的允许你传递您可以使用以分离目标任意配置参数。

这是在您的项目文件中有一个条件配置:

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

和传递一个自定义配置与到qmake

qmake CONFIG+=myX64

您获得所需的结果。

没有,但您可以创建并使用新的mkspec,我觉得QMAKE也定义了当前mkspec命名的平台标识符。为什么你需要测试64位?

里德

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top