Ответ 1
В статье, в которую вы ссылались, в самом начале говорилось, что файл проекта обрабатывается три раза. Это должно ответить на ваш первый вопрос; поскольку он обрабатывается три раза, ваше сообщение() выполняется три раза. Почему он обрабатывается несколько раз? Потому что qmake не строит ваш проект! Он генерирует только команды построения, которые затем используются для фактического создания проекта. Чтобы генерировать инструкции по сборке для всех возможных конфигураций, необходимо обработать файл проекта несколько раз, один раз для каждой конфигурации.
Для вашего второго вопроса: ваш проект построен только в режиме отладки, если вы выбрали то, что вы выбрали, но также создаете инструкции для режима выпуска, как уже упоминалось выше. Например, при использовании "make" с mingw (а не Visual Studio) вы получаете два Makefiles: Makefile.Release
и Makefile.Debug
. Когда он генерирует файл make release, это когда печатается "режим выпуска".
Наконец, CONFIG(debug, debug|release)
оценивает значение true, если CONFIG содержит "debug" , но не "release" , или если он содержит как "debug" , так и "release" , но "release" не появляется после последнего появления "debug" ". Например, у вас может быть следующее:
CONFIG += release debug release debug release debug
Поскольку последний "отладочный" приходит после последней "освобождения", CONFIG(debug, debug|release)
имеет значение true.
Первый аргумент CONFIG() ( "debug" в этом случае) - это значение, которое должно появиться последним. Второй аргумент ( "debug | release" ) - это набор значений, с которыми проверяется первый аргумент.
Перевод этого слова на английский язык даст следующее: оцените значение true, если "debug" появляется хотя бы один раз, и в случае появления "release" последнее появление "debug" появляется после последнего появления "release" ,.