1. ホーム
  2. c++

[解決済み] CMakeビルドモード RelWithDebInfo

2022-01-29 03:35:47

質問

ビルドモードのReleaseとDebugの違いがわかったような気がします。 主な違いは、デバッグモードでは、生成される実行ファイルは最適化されず(デバッグが困難になる可能性があるため)、デバッグシンボルが含まれることです。

WinMerge の外部依存コンポーネントの 1 つである PCRE をビルドしているときに、これまで見たことのないビルド モードがあることに気づきました。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 としてコンパイルするのは意味がないのでしょうか?

どのように解決するのですか?

<ブロッククオート

何か見落としているのか、それとも すべてのリリースコードをコンパイルするのは意味がない をRelWithDebInfoとして使用できますか?

デバッグ情報をどこまで顧客に信用させるかによりますね。

追加情報です。

gccはデバッグ情報をオブジェクトコードにエンコードします。

以下はgccのpdb相当です。

ビルドターゲットの外にgccのデバッグシンボルを生成する方法は?

cmakeはこの方法をサポートしていないようですので、ご注意ください。