2013-02-04 1 views
7

J'ai téléchargé Qt 5 et essayé de construire mon projet. Les projets sont maintenant tenus d'ajouter des widgets à la variable QT, mais qui produit un avertissement avec la version plus ancienne:qmake comparaison de variables numériques

projet MESSAGE: Avertissement: QT inconnu: widgets

La solution simple semblent ajouter une simple vérification :

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

Cela n'a pas fonctionné (QT 4 est imprimé). Il est vrai que equals ne fait pas partie du qmake function reference, mais contient. Donc essayé avec:

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

mais cela n'a pas fonctionné, non plus. Diverses autres combinaisons comme contains ("$$ QT_MAJOR_VERSION", "5") ne fonctionnent pas.

L'hypothèse selon laquelle $$ QT_MAJOR_VERSION est 4 ou 5 est vérifiée par une ligne comme:

message($$QT_MAJOR_VERSION) 

Définition d'une variable locale et de test pour sa valeur de cette manière ne fonctionne pas. La conclusion à tout cela est que je ne comprends pas quelque chose de fondamental sur le mécanisme de qmake. Alors, comment comparer une variable avec une valeur dans le fichier qmake .pro?

Répondre

10

Vous pouvez utiliser:

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

En plus ce que dit Zlatomir, greaterThan est une comparaison stricte (et non "plus et égaux que"). Vous pouvez également utiliser isEqual(QT_MAJOR_VERSION, 5) pour tester l'égalité numérique.

Notez que vous ne devez pas spécifier $$ pour QT_MAJOR_VERSION, QT_MINOR_VERSION et QT_PATCH_VERSION.

3

Il semble que

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

ne fonctionne pas, mais

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

œuvres ... il est sensible à la position de l'entretoise d'ouverture! Wierd

Questions connexes