cmake -E copy_if_different...
と一緒にこれを達成するには、add_custom_command
を使用します。
/CMakeLists.txt
/src
/libs/test.dll
とコマンドが適用されるあなたのcmakeのターゲットがMyTest
であるあなたは、その後、:あなたは次のディレクトリ構造を持っている場合、完全な情報については、お使いの場合にはそう
cmake --help-command add_custom_command
cmake -E
を実行しますCMakeLists.txtに以下を追加することができます:
add_custom_command(TARGET MyTest POST_BUILD # Adds a post-build event to MyTest
COMMAND ${CMAKE_COMMAND} -E copy_if_different # which executes "cmake - E copy_if_different..."
"${PROJECT_SOURCE_DIR}/libs/test.dll" # <--this is in-file
$<TARGET_FILE_DIR:MyTest>) # <--this is out-file path
コピーした/libs/
ディレクトリの内容全体をしたい場合は
、使用cmake -E copy_directory
:
add_custom_command(TARGET MyTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/libs"
$<TARGET_FILE_DIR:MyTest>)
あなたは(リリース、デバッグ構成に応じて異なるDLLをコピーする必要がある場合
、たとえば、対応する設定で名前が付けられたサブディレクトリに/libs/Release
と/libs/Debug
という名前のサブディレクトリを持つことができます。次に、このように、add_custom_command
呼び出しにDLLへのパスに設定の種類を注入する必要があります。
add_custom_command(TARGET MyTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/libs/$<CONFIGURATION>"
$<TARGET_FILE_DIR:MyTest>)
私の場合は、将来的に他の人に役立ちます。私は、メインの実行可能ファイルがオプションでリンクしているスタティックライブラリプロジェクトを持っていて、そのライブラリは追加された場合にDLLをコピーする必要があります。したがって、そのライブラリのCMakeLists.txtファイルでは、私は '$ {CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$'をターゲットの宛先に使用しました。さもなければ、それは役に立たなかったライブラリ構築パスにそれをコピーします。 –
AberrantWolf