关于使用QtCreator构建过程的一系列问题:
在QtCreator中,您可以在Release,Debug和Profiler构建之间进行区别。 f。下图:
这些东西到底是做什么的(!)?我无法在互联网上找到答案。 尤其是,我对“调试”模式是否将项目“ debug”添加到qmake变量“ CONFIG”,“-g”开关以要求g ++为gdb(我的调试器)添加调试信息等感兴趣。
< / li>哪个调试器的意思是“ CONFIG + = debug”:“常规”调试器GDB(以我为例)还是QML调试器?
为什么在项目文件中使用“ + =”而不是“ * =”如此常见?如果第二个变量已经存在,则不会将其添加到qmake变量中。这是否意味着qmake特殊变量中的多个相等项是无害的?
非常感谢!
答案 0 :(得分:1)
您可以通过观察在“编译器输出”窗口窗格中调用的qmake命令行来查看它们的作用:
qmake MyProject.pro "CONFIG+=qtquickcompiler"
qmake MyProject.pro "CONFIG+=debug" "CONFIG+=qml_debug"
qmake MyProject.pro "CONFIG+=qml_debug" "CONFIG+=qtquickcompiler" "CONFIG+=force_debug_info" "CONFIG+=separate_debug_info"
gdb没有-g
选项,您是说gcc吗? CONFIG+=debug
的作用是将-g
选项传递给gcc,如您在Qt/mkspecs/common/gcc-base.conf
中的这一行所见:
QMAKE_CFLAGS_DEBUG += -g
编译调试版本仅意味着编译后的库和可执行文件将未经优化,并且包含对调试器有用的额外信息。不需要在特定的调试器中执行,甚至根本不需要在任何调试器中执行。您也可以在调试器中运行发行版,尽管结果可能不太可靠。
qmake特殊变量中的多个相等项通常是无害的,对于CONFIG
来说,它们甚至可能是有意义的。例如,CONFIG
包含两者 debug
和release
都是合法的。在这种情况下,列表中的最后一个将生效。在以下示例中考虑+=
和*=
之间的区别:
CONFIG = debug
CONFIG += release
CONFIG += debug # now CONFIG = debug release debug, so debug is the effective mode
CONFIG = debug
CONFIG += release
CONFIG *= debug # now CONFIG = debug release, so release is the effective mode
在命令行上可能不推荐*=
的另一个原因是:许多shell会将包含*
的任何参数视为要扩展的文件glob /通配符,除非对其进行转义或引用。