Je ne l'utiliserais add_custom_command
pour atteindre cette cmake -E copy_if_different...
. Pour plein d'infos exécuter
cmake --help-command add_custom_command
cmake -E
Donc dans votre cas, si vous avez la structure de répertoire suivante:
/CMakeLists.txt
/src
/libs/test.dll
et votre CMake cible à laquelle la commande s'applique est - MyTest
, alors vous pourriez ajouter ce qui suit à votre 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
Si vous voulez juste l'intégralité du contenu de l' /libs/
répertoire copié, utilisez 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>)
Si vous avez besoin de copier dll différentes selon la configuration (Libération, le Débogage, par exemple), alors vous pourriez avoir ces sous-répertoires nommés avec la configuration correspondante: /libs/Release
, et /libs/Debug
. Vous devez ensuite injecter le type de configuration dans le chemin de la dll à la add_custom_command
appel, comme ceci:
add_custom_command(TARGET MyTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/libs/$<CONFIGURATION>"
$<TARGET_FILE_DIR:MyTest>)