Итак, существует множество способов копировать файлы (и каталоги) во время выполнения CMake
(все варианты file(COPY ...)
, configure_file(...)
и add_custom_command()
работают*), но я еще не нашел, как сделать так, чтобы файл или каталог, скопированный из исходного кода, отображался в каталоге сборки. в архиве, сгенерированном CPack. Я думал, что этот ответ SO исправит это, поскольку он фактически связывает копирование с целью, которая затем будет связана с установкой к нему:
install(TARGET mytarget DESTINATION bin)
тогда как я понял, что команды file()
и configure_file()
не имеют очевидного способа добавления к цели. Но это не сработало. Итак, учитывая простой CMakeLists.txt, такой как приведенный ниже, как сделать, чтобы все файлы (включая каталог exmaple
) отображались в архиве?!
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
enable_language(FORTRAN)
add_executable(mytarget ${PROJECT_SOURCE_DIR}/myprog.for)
install(TARGETS mytarget DESTINATION bin)
add_custom_command(TARGET mytarget PREBUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/examplefiles ${PROJECT_BINARY_DIR}/examplefiles)
set(CPACK_GENERATOR "TGZ")
include(CPack)
* Я еще не выяснил, какой из этих трех методов на самом деле (наиболее?) правильный, поэтому любые советы по этому поводу тоже будут очень признательны.