7

Qt 5 をダウンロードして、プロジェクトをビルドしようとしました。ウィジェットを QT 変数に追加するためにプロジェクトが必要になりましたが、古いバージョンでは警告が生成されます。

プロジェクト メッセージ: 警告: 不明 QT: ウィジェット

簡単な解決策は、簡単なチェックを追加するようです:

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

それはうまくいきませんでした(QT 4が印刷されています)。equals がqmake 関数参照の一部ではなく、 is を含むことは事実です。だから試してみました:

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

ズラトミールが言ったことに加えてgreaterThan、厳密な比較があります(「より大きいと等しい」ではありません)。isEqual(QT_MAJOR_VERSION, 5)数値が等しいかどうかをテストするために使用することもできます。

$$for QT_MAJOR_VERSIONQT_MINOR_VERSIONand を指定しないでくださいQT_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 に答える