J'ai lu cependant ICI , mais je ne comprends toujours pas la syntaxe du qmake CONFIG
variable. par exemple, si j'ai les paramètres CONFIG suivants dans mon .pro file
:
CONFIG(debug, debug|release) {
message("debug mode")
}else {
message("release mode")
}
puis, lors de l'exécution de qmake
, les éléments suivants seront affichés dans la sortie de compilation dans Qt-Creator:
Project MESSAGE: debug mode
Project MESSAGE: debug mode
Project MESSAGE: release mode
sachant que je construis mon projet dans un "mode de débogage" , alors mes questions sont:
Dans l'article auquel vous avez lié, il est dit au tout début que le fichier de projet est traité trois fois. Cela devrait répondre à votre première question; comme il est traité trois fois, votre message () est également exécuté trois fois. Pourquoi est-il traité plusieurs fois? Parce que qmake ne construit pas votre projet! Il ne génère que des instructions de construction qui sont ensuite utilisées pour réellement construire le projet. Afin de générer des instructions de construction pour toutes les configurations possibles, il doit traiter le fichier de projet plusieurs fois, une fois pour chaque configuration.
Pour votre deuxième question: votre projet est construit uniquement en mode débogage si c'est ce que vous avez sélectionné, mais des instructions de construction sont également créées pour le mode release, comme déjà mentionné ci-dessus. Lorsque vous utilisez "make" avec mingw par exemple (plutôt que Visual Studio), vous obtenez deux Makefiles: Makefile.Release
Et Makefile.Debug
. Lorsqu'il génère le makefile de version, c'est alors que le "mode de version" est imprimé.
Enfin, CONFIG(debug, debug|release)
a la valeur true si CONFIG contient "debug" mais pas "release", ou s'il contient à la fois "debug" et "release" mais "release" n'apparaît pas après la dernière occurrence de " déboguer". Par exemple, vous pourriez avoir ceci:
CONFIG += release debug release debug release debug
Puisque le dernier "débogage" vient après la dernière "version", CONFIG(debug, debug|release)
est vrai.
Le premier argument de CONFIG () ("debug" dans ce cas) est la valeur qui doit apparaître en dernier. Le deuxième argument ("debug | release") est l'ensemble de valeurs par rapport auquel le premier argument est vérifié.
Traduire cela en anglais donnerait quelque chose comme ceci: évaluez à true si "debug" apparaît au moins une fois et, dans le cas où "release" apparaît également, la dernière apparition de "debug" intervient après la dernière apparition de "release".