7

我已经下载了 Qt 5 并尝试构建我的项目。项目现在需要将小部件添加到 QT 变量,但这会在旧版本中产生警告:

项目消息:警告:未知 QT:小部件

简单的解决方案似乎添加了一个简单的检查:

equals( $$QT_MAJOR_VERSION, 5 ) {
  message(" ================ QT 5 ================ ")
  QT += widgets
} else {
  message(" ================ QT 4 ================ ")
}

那没有用(打印了QT 4)。确实,equals 不是qmake 函数参考的一部分,但包含。所以尝试了:

contains( $$QT_MAJOR_VERSION, 5 )   {
  message(" ================ QT 5 ================ ")
  QT += widgets
} else {
  message(" ================ QT 4 ================ ")
}

但这也没有奏效。其他各种组合,如 contains("$$QT_MAJOR_VERSION", "5") 不起作用。

$$QT_MAJOR_VERSION 为 4 或 5 的假设通过如下行检查:

message( $$QT_MAJOR_VERSION )

以这种方式设置局部变量并测试其值是行不通的。

所有这一切的结论是我不了解关于 qmake 机制的一些基本知识。那么如何将变量与 qmake .pro 文件中的值进行比较呢?

4

3 回答 3

10

您可以使用:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
于 2013-02-04T08:15:35.740 回答
5

除了 Zlatomir 所说的,greaterThan是一个严格的比较(不是“大于等于”)。您还可以isEqual(QT_MAJOR_VERSION, 5)用于测试数值相等性。

请注意,您不应指定$$forQT_MAJOR_VERSION和。QT_MINOR_VERSIONQT_PATCH_VERSION

于 2013-02-04T08:22:51.373 回答
4

看起来

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

不起作用,但是

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

工作......它对开口支架的位置很敏感!奇怪的

于 2014-09-14T16:27:47.420 回答