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位环境?
答案 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位目标,则返回i386
值x86_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
}
答案 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位?
里德