qmake 数值变量比较



我已经下载了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_VERSIONQT_MINOR_VERSIONQT_PATCH_VERSION 指定$$

看起来

equals (QT_MAJOR_VERSION, 4)
{
   //some conditional stuff
}

不起作用,但是

equals (QT_MAJOR_VERSION, 4) {
   //some conditional stuff
}

工程。。。它对开口支架的位置很敏感!威尔德

相关内容

  • 没有找到相关文章