我已经下载了Qt 5并尝试构建我的项目。项目现在需要将小部件添加到 QT 变量,但这会在旧版本中生成警告:
项目消息:警告:未知 QT:小部件
简单的解决方案似乎添加了一个简单的检查:
equals( $$QT_MAJOR_VERSION, 5 ) {
message(" ================ QT 5 ================ ")
QT += widgets
} else {
message(" ================ QT 4 ================ ")
}
这不起作用(打印了 QT 4)。确实,等于不是 qmake 函数引用的一部分,而是包含 is。所以尝试过:
contains( $$QT_MAJOR_VERSION, 5 ) {
message(" ================ QT 5 ================ ")
QT += widgets
} else {
message(" ================ QT 4 ================ ")
}
但这也没有奏效。其他各种组合,如包含("$$QT_MAJOR_VERSION","5")不起作用。
假设 $$QT_MAJOR_VERSION 为 4 或 5,则用如下行进行检查:
message( $$QT_MAJOR_VERSION )
以这种方式设置局部变量并测试其值不起作用。
所有这一切的结论是我不了解qmake机制的一些基本内容。那么如何将变量与 qmake .pro 文件中的值进行比较呢?
您可以使用:
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
除了Zlatomir所说的之外,greaterThan
是一个严格的比较(不是"大于和等于")。您还可以使用isEqual(QT_MAJOR_VERSION, 5)
来测试数值相等性。
请注意,不应为 QT_MAJOR_VERSION
、 QT_MINOR_VERSION
和 QT_PATCH_VERSION
指定$$
。
看起来
equals (QT_MAJOR_VERSION, 4)
{
//some conditional stuff
}
不起作用,但是
equals (QT_MAJOR_VERSION, 4) {
//some conditional stuff
}
工程。。。它对开口支架的位置很敏感!威尔德