Visual Studioで生成されたDLLファイルとEXEファイルのデバッグに必要なコンパニオンPDBファイルをCMakeにインストールさせるにはどうすればよいですか?
私はこの質問に対する良い答えを得ようとしてしばらく苦労しました。私は今、1つを見つけたと思います:_$<TARGET_PDB_FILE:tgt>
_ジェネレータ式(CMake 3.1.3以降で利用可能)でinstallfileコマンドを使用します。具体的には、以下のinstallコマンドが機能しているようです。このコマンドは、ターゲットの$ {PROJECT_NAME} pdbファイルをターゲットのインストールbinディレクトリにコピーします。
_install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)
_
このコマンドは、pdbファイルを生成する構成ごとにpdbファイルをインストールします。 OPTIONAL
を使用することにより、ソースpdbファイルが存在しない場合でもinstallコマンドはエラーを生成しません。このコマンドは、add_library(${PROJECT_NAME} ...)
またはadd_executable(${PROJECT_NAME} ...)
コマンドで作成されたターゲットに使用することを目的としています。
これが私が見つけた最良の答えです。もっと良いものがあれば教えてください。 cmake-generator-expressions ドキュメントの「InformationalExpressions」セクションで、_TARGET_PDB_FILE
_ジェネレーター式のドキュメントを理解するのが難しいことがわかりました。
また、個別のPDBファイルが必要ない場合は、 Generate Debug Information optimized for sharing and publishing (/DEBUG:FULL)
を使用してデバッグを行うことができます。これを行うには、ターゲットLINK_FLAGS
に ${PROJECT_NAME}
を設定する必要があります。
set_target_properties(${PROJECT_NAME} PROPERTIES
LINK_FLAGS_DEBUG "-DEBUG:FULL"
)
または、何らかの理由でCMakeLists.txt
を編集できない場合は、cmake
オプションを設定できます。