qt工程文件中根据编译环境进行不同操作

  • Post author:
  • Post category:其他


我们使用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
}



版权声明:本文为steve_cui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。