qMake:qmake如何准确解释“ CONFIG(debug,debug | release)”语法

问题描述 投票:40回答:1

尽管我阅读了HERE,但我仍然不了解qmake CONFIG变量的语法。例如,如果我在.pro file中具有以下CONFIG设置:

CONFIG(debug, debug|release) {
    message("debug mode")
}else {
    message("release mode")
}

然后,当运行qmake时,将在Qt-Creator中的Compile Output中显示以下内容:

Project MESSAGE: debug mode
Project MESSAGE: debug mode
Project MESSAGE: release mode

知道我正在以“调试模式”]构建项目,那么我的问题是:

  • 为什么不只显示“调试模式”消息?为什么不只显示一次?
  • 然后,由于我是在“调试模式”下构建,为什么显示消息“ Project MESSAGE:发布模式”
  • 确切地说,语法:CONFIG(debug,debug | release)的真正含义是什么?
  • 这是否意味着以调试模式构建,然后再次以调试模式构建,最后以发布模式构建?我知道这些括号“ {}”表示scope(旧链接已终止,建议scope),但是qmake如何解释这些括号“()”中的内容?

尽管我在这里阅读,但我仍然不了解qmake CONFIG变量的语法。例如,如果我的.pro文件中具有以下CONFIG设置:CONFIG(debug,debug | release){...

qt qt-creator qmake
1个回答
58
投票

在您链接的文章中,一开始就说项目文件被处理了3次。这应该回答您的第一个问题;由于已处理三次,因此您的message()也将执行三次。为什么要多次处理?因为qmake不会构建您的项目!它仅生成构建指令,然后将其用于实际构建项目。为了生成所有可能配置的构建指令,它需要多次处理项目文件,每个配置一次。

关于第二个问题:如您所选择的,仅在调试模式下构建项目,但是如上所述,构建说明也针对发布模式创建。例如,在mingw中使用“ make”(而不是Visual Studio)时,将获得两个Makefile:Makefile.ReleaseMakefile.Debug。当它生成发布makefile时,即打印“发布模式”。

© www.soinside.com 2019 - 2024. All rights reserved.