Полагаю, вы сможете использовать пользовательскую команду, которая зависит от файла. Что-то вроде:
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/output.file
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input.file ${CMAKE_CURRENT_BINARY_DIR}/output.file
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/input.file)
Дайте мне знать, если это не поможет. Это может помочь предоставить код CMake, который вы сейчас используете.
Вы также можете попробовать "$ {CMAKE_COMMAND} -E copy_if_different"; Мне не ясно, будет ли это иначе, учитывая зависимости команды, но я наверняка что-то упустил, или это могло бы быть иначе, если вы не используете вывод "make".
Если вы хотите попробовать сделать копию во время генерации (когда вы запускаете cmake), вы можете использовать эту команду (я думаю, что мой синтаксис правильный, но я его не проверял):
file(COPY
${CMAKE_CURRENT_SOURCE_DIR}/input.file
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
Использование INSTALL вместо COPY дает немного другое поведение.
Если вам нужно запустить произвольный процесс во время генерации, попробуйте команду execute_process
.
Конечно, подробности см. Документация CMake .