我认为我了解 Release 和 Debug 构建模式之间的区别。主要区别在于在调试模式下,生成的可执行文件没有经过优化(因为这可能会使调试更加困难)并且包含调试符号。
在构建 PCRE(WinMerge 的外部依赖项之一)时,我注意到了一种我以前从未见过的构建模式:RelWithDebInfo。
这里提到了 Debug 和 RelWithDebInfo 之间的区别:http ://www.cmake.org/pipermail/cmake/2001-October/002479.html 。摘录:“RelwithDebInfo 与 Release 模式非常相似。它生成完全优化的代码,但也构建程序数据库,并插入调试行信息,让调试器有机会随时猜测您在代码中的位置。”
这听起来像是一个非常好的主意,但不一定很明显如何设置。此链接描述了如何为 VC++ 启用此功能:http ://www.cygnus-software.com/papers/release_debugging.html
我是否遗漏了什么,或者将所有发布代码编译为 RelWithDebInfo 没有意义?