2013-02-04 62 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