Команда add_custom_command должна быть обновлена, чтобы указать, куда файл должен быть скопирован.В обоих примерах файл копируется в текущий рабочий каталог, поскольку путь не указан.Вот пример того, как скопировать в домашний каталог.
set(newloc ~)
add_custom_command(
OUTPUT ${newloc}/copy_this.txt
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/copy_this.txt ${newloc}/copy_this.txt
COMMENT "Copying to ${newloc}"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/copy_this.txt
)
add_custom_target(target_copy_this.txt ALL DEPENDS copy_this.txt)
Кажется, что вы хотите скопировать файл туда, где заканчивается одна из целей.В visual studio это может быть ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
или ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}
в зависимости от того, что еще происходит в CMakeLists.txt
.
. Используя этот пример и установив newloc
в ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
, вы получите следующий вывод:
cmake --build . --config RelWithDebInfo
CustomBuild:
Copying to C:/Users/ZZZ/Projects/test/bld/RelWithDebInfo