Qt qMake:qMake如何准确地解释;配置(调试,调试发布)";语法
虽然我读了,但我仍然不理解Qt qMake:qMake如何准确地解释;配置(调试,调试发布)";语法,qt,qt-creator,qmake,Qt,Qt Creator,Qmake,虽然我读了,但我仍然不理解qmake-CONFIG变量的语法。例如,如果我的.pro文件中有以下配置设置: CONFIG(debug, debug|release) { message("debug mode") }else { message("release mode") } 然后,当运行qmake时,Qt Creator中的编译输出中将显示以下内容: Project MESSAGE: debug mode Project MESSAGE: debug mode Proje
qmake-CONFIG
变量的语法。例如,如果我的.pro文件中有以下配置设置
:
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
知道我正在以“调试模式”构建项目,我的问题是:
- 为什么不只显示“调试模式”消息?为什么不只展示一次呢
- 那么,既然我是在“调试模式”下构建的,为什么会显示消息“项目消息:发布模式”
- 确切地说,语法:CONFIG(debug,debug | release)的真正含义是什么?是否意味着在调试模式下构建,然后再次在调试模式下构建,最后在发布模式下构建?我知道这些括号“{}”意味着一个(旧链接已经死了,推荐)但是qmake如何解释这些括号内的内容“()”
Makefile.Release
和Makefile.Debug
。当它生成发布makefile时,即打印“发布模式”
最后,CONFIG(debug,debug | release)
如果CONFIG包含“debug”但不包含“release”,或者如果它同时包含“debug”和“release”,但“release”在最后一次出现“debug”之后没有出现,则计算结果为true。例如,您可能有:
CONFIG += release debug release debug release debug
由于最后一次“调试”发生在最后一次“发布”之后,CONFIG(debug,debug | release)
为真
CONFIG()的第一个参数(本例中为“debug”)是必须最后出现的值。第二个参数(“debug | release”)是检查第一个参数的值集
将其翻译成英语将给出如下结果:如果“debug”至少出现一次,则评估为true,如果“release”也出现,则“debug”的最后一次出现在“release”的最后一次出现之后。非常感谢您的回答,这是非常重要和有用的。然而,我不理解“声明评估”部分。您提到“
CONFIG(debug,debug | release)
如果CONFIG包含debug等,则计算结果为true”,您所说的“contains”是什么意思?您的意思是定义为CONFIG+=debug
?如果是,鉴于我的.pro文件
中没有此类定义,那么此定义位于何处。。另一件事,你也定义了:CONFIG+=release-debug-release-debug
,像这样定义“debug”和“release”意味着什么?请原谅我的问题太多了,因为我根本找不到任何解释它的互联网来源,更不用说你的解释非常简单,简洁明了。@hashDefine Qt创建者可以在调用qmake时将“release”添加到配置中。例如,如果在“Build”菜单中选择“runqmake”,并将构建设置为release模式,则可以看到它将“CONFIG+=release”作为参数传递给qmake。由于CONFIG已经可以包含“debug”(因为您自己已经将其放在项目文件中,或者它可能来自mkspec文件),所以必须有一种方法来覆盖它。这就是“在配置中最后出现”规则存在的原因。我举的例子就是这样;举个例子。添加“release”和“debug”来配置您自己是没有用的。我个人认为debug | release对应于debug |和_release@user1914692构建是调试或发布。不能两者兼而有之。