[〜#〜] here [〜#〜] を読みましたが、qmake CONFIG
変数の構文はまだわかりません。たとえば、.pro file
に次のCONFIG設定がある場合:
CONFIG(debug, debug|release) {
message("debug mode")
}else {
message("release mode")
}
その後、qmake
を実行すると、Qt-Creatorのコンパイル出力に次が表示されます。
Project MESSAGE: debug mode
Project MESSAGE: debug mode
Project MESSAGE: release mode
"デバッグモード"でプロジェクトを構築していることを知っている場合、私の質問は次のとおりです。
リンクした記事では、プロジェクトファイルが3回処理されると最初に述べました。これで最初の質問に答えるはずです。 3回処理されるため、message()も3回実行されます。なぜ複数回処理されるのですか? qmakeはプロジェクトをビルドしないためです!実際にプロジェクトをビルドするために使用されるビルド命令のみを生成します。考えられるすべての構成のビルド手順を生成するには、プロジェクトファイルを複数回(構成ごとに1回)処理する必要があります。
2番目の質問:デバッグモードで選択した場合のみ、プロジェクトはデバッグモードでビルドされますが、既に説明したように、リリースモードでもビルド手順が作成されます。たとえば、(Visual Studioではなく)mingwで「make」を使用すると、2つのMakefile、_Makefile.Release
_および_Makefile.Debug
_を取得します。リリースメイクファイルを生成すると、「リリースモード」が出力されます。
最後に、CONFIG(debug, debug|release)
は、CONFIGに「debug」が含まれるが「release」に含まれない場合、または「debug」と「release」の両方を含むが「release」が最後に出現した後に表示されない場合にtrueと評価されますデバッグ"。たとえば、これがあるかもしれません:
_CONFIG += release debug release debug release debug
_
最後の「デバッグ」は最後の「リリース」の後に来るため、CONFIG(debug, debug|release)
はtrueです。
CONFIG()の最初の引数(この場合は「デバッグ」)は、最後に表示する必要がある値です。 2番目の引数( "debug | release")は、最初の引数がチェックされる値のセットです。
それを英語に翻訳すると、次のような結果になります。「debug」が少なくとも1回出現し、「release」も出現する場合、「debug」の最後の出現が「release」の最後の出現の後に来る場合、trueと評価します。