Qmake中win64configuration的标识符

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

到目前为止,我试过使用:

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

结果总是“使用win32”。

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

Solutions Collecting From Web of "Qmake中win64configuration的标识符"

我这样做

 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 Dev FAQ

我已经想出了一个办法。

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位?

芦苇