问题:总是在Qt Creator 2.8.1 for Linux中选择调试或发布的地方评估CONFIG(调试,调试|发布)和CONFIG(发布,发布|发布)。
我在Qt Creator应用程序中的配置(库存 - 新项目的默认值):
Projects->Build Settings->Debug Build Steps:
qmake build configuration: Debug
Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++ CONFIG+=debug
Projects->Build Settings->Release Build Steps:
qmake build configuration: Release
Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++
我在proj.pro中的配置:
message(Variable CONFIG:)
message($$CONFIG)
CONFIG(debug,debug|release)
{
message(Debug build)
}
CONFIG(release,debug|release)
{
message(Release build)
}
调试控制台上的输出:
Project MESSAGE: Variable CONFIG:
Project MESSAGE: lex yacc warn_on debug uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework debug console
Project MESSAGE: Debug build
Project MESSAGE: Release build
发布控制台上的输出:
Project MESSAGE: Variable CONFIG:
Project MESSAGE: lex yacc warn_on uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework console
Project MESSAGE: Debug build
Project MESSAGE: Release build
在Windows 7下,我没有遇到过这种.pro配置的任何问题,而且工作正常。 我绝望并修改了.pro文件:
CONFIG = test
message(Variable CONFIG:)
message($$CONFIG)
CONFIG(debug,debug|release)
{
message(Debug build)
}
CONFIG(release,debug|release)
{
message(Release build)
}
我对输出感到惊讶:
Project MESSAGE: Variable CONFIG:
Project MESSAGE: test
Project MESSAGE: Debug build
Project MESSAGE: Release build
所以即使我完全清理CONFIG变量,它仍然会看到调试和发布配置。
我做错了什么?
答案 0 :(得分:20)
Qmake很疯狂,这是唯一可行的解释。整个发布/调试在配置中多次闻起来像一个旧的设计错误,在它迟到之前从未解决,并且已经编写了太多配置。还记得make中的标签吗? Dude有15个用户,所以他从来没有解决过这个错误的决定。
反正。
我在Qt 4.8.4.1上看到了同样的问题。
以下是解决方案:在大括号之前删除换行符。
从字面上看,这有效:
CONFIG(release, debug|release) {
message(Release)
}
CONFIG(debug, debug|release) {
message(Debug)
}
虽然这不是:
CONFIG(release, debug|release)
{
message(Release)
}
CONFIG(debug, debug|release)
{
message(Debug)
}
我怀疑这是qmake的几个版本中的解析错误,可能只在linux端。