2013-02-04 61 views
7

我已经下载了Qt 5并试图构建我的项目。现在项目需要的小部件添加到QT变量,但产生与旧版本警告:qmake数值可变比较

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

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

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

这没有奏效(打印QT 4)。确实,等于不是qmake function reference的一部分,但包含is。所以试过:

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

但这并没有奏效。像contains(“$$ QT_MAJOR_VERSION”,“5”)等各种其他组合不起作用。

message($$QT_MAJOR_VERSION) 

设置为它以这种方式行不通值的局部变量和测试:

即$$ QT_MAJOR_VERSION为4或5的假设与像线检查。

所有这一切的结论是,我不明白有关qmake机制的一些基本知识。那么如何比较一个变量与qmake .pro文件中的值呢?

回答

10

您可以使用:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
5

再说什么Zlatomir说,greaterThan是严格比较(不是 “更大,比等于”)。您也可以使用isEqual(QT_MAJOR_VERSION, 5)来测试数值相等。

请注意,您不应指定$$QT_MAJOR_VERSION,QT_MINOR_VERSIONQT_PATCH_VERSION

3

看来,

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

不起作用,但

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

作品......这是左括号的位置敏感! Wierd