我们使用qt进行工程编译时,经常会因为环境不同,而导致编译错误的情况,引用头文件路径不对,链接库文件不存在,这样或那样的问题。
原来qt工程文件也可以像c++语言一样,通过类似宏定义预处理命令来对不同的环境进行区分处理,非常的方便实用,下面介绍几个常用的环境判断方法,供大家参考
:
是否为32位系统:
contains(QT_ARCH, i386) {
message(“32-bit”)
} else {
message(“64-bit”)
}
判断CPU架构环境:
contains(QT_ARCH, arm64){
message(“arm64”)
}else{
contains(TARGET_ARCH, x86_64){
message(“x86”)}
else{
contains(TARGET_ARCH, mips64){
message(“mips64”)}
}
}
是否linux/windows :
win32{
message(“windows”)
}
unix{
message(“linux”)
}
是否debug / release:
CONFIG(debug, debug|release){
message(“debug”)
}else{message(“release”)
}
组合使用:
CONFIG(debug, debug|release){
message(“debug”)
win32{
message(“windows”)
}
unix{
contains(QT_ARCH, arm64){
message(“arm64”)
}else{
message(“x86”)
}
}
}else{message(“release”)
win32{
message(“windows”)
}
unix{
message(“linux”)
}
}
QT_ARCH
针对qt5及其以上版本有效,对之前的版本是无效的,针对之前的版本,请使用下面的方法:
greaterThan(QT_MAJOR_VERSION, 4) { TARGET_ARCH=$${QT_ARCH} } else { TARGET_ARCH=$${QMAKE_HOST.arch} } #Secondly, use TARGET_ARCH to check. contains(TARGET_ARCH, x86_64) { ARCHITECTURE = x64 } else { ARCHITECTURE = x86 }