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