【发布时间】:2010-11-17 09:53:37
【问题描述】:
我认为我了解发布和调试构建模式之间的区别。主要区别在于,在调试模式下,生成的可执行文件没有经过优化(因为这会使调试更加困难)并且包含调试符号。
在构建 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 没有意义?
【问题讨论】:
-
默认情况下,CMake 在 Visual Studio 下的 RelWithDebInfo 下通过使用标志
/Ob1而不是 Release 下的/Ob2来部分禁用内联。这会对性能产生很大影响。
标签: c++ visual-studio cmake