私のプロジェクトで単体テストを実行するために、実行可能ファイル、ライブラリ、およびその他の関連ファイルを別の場所にコピーするカスタムコマンドがあります。このコマンドを実行するのではなく、特定のセットアップで実行することができます。再構築されました。 Linuxでは、これはかなり簡単です。しかし、Windowsでは、cmakeが出力のディレクトリに設定名を追加するという事実のために、少しぶつかりました(私は一般的に好きですが、この場合は私がしていることをねじ込みます)。生成されたライブラリや実行可能ファイルへのパスを決定するのが難しくなります。私はちょうど別のディレクトリWindowsでadd_custom_commandをどのように設定するのですか?
set(EXE_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/exeName${CMAKE_EXECUTABLE_SUFFIX}")
set(NEW_EXE_PATH "${RUN_UNITTESTS_DIR}/exeName${CMAKE_EXECUTABLE_SUFFIX}")
add_custom_command(TARGET unitTests POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy "${EXE_PATH}" "${NEW_EXE_PATH}")
に実行可能ファイルをコピーしたカスタムコマンドを持っていた場合、実行はCMAKE_RUNTIME_OUTPUT_DIRECTORY
には本当にないので、例えば、Windows上でチョークになるだろう。構成タイプによっては、${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Release
または${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug
のいずれかになります。 Linuxでは、CMAKE_BUILD_TYPE
を使用して修正してパスに追加することはできますが、Windowsでは動作しません。これは、Windowsではcmakeが複数の設定を生成するためです。だから、私は何をできるようにしたいことは
add_custom_command(TARGET unitTests POST_BUILD
debug
COMMAND ${CMAKE_COMMAND} ARGS -E copy "${DEBUG_EXE_PATH}" "${DEBUG_NEW_EXE}")
add_custom_command(TARGET unitTests POST_BUILD
release
COMMAND ${CMAKE_COMMAND} ARGS -E copy "${RELEASE_EXE_PATH}" "${RELEASE_NEW_EXE}")
といくつかのcmakeのコマンドがそれを行うことができるように見るようなものがある(例えばtarget_link_libraries
)、しかし、私の知る限り、add_custom_target
はしていませんその能力を提供する。それで、どうやってやるの? Windows上でカスタムコマンドを設定固有にするにはどうすればよいですか?