Дословный перевод вашего примера tar будет:
ADD_CUSTOM_TARGET(tar
tar -cvf ${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.tar ${SRCS} Makefile
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
Это добавляет новую целевую "tar", которая всегда выполняет данную команду всякий раз, когда она запрашивается как цель командной строки, то есть, когда вы запускаете make tar
, она создает новый файл tar. Аргумент WORKING_DIRECTORY
гарантирует, что исходные файлы взяты из исходного каталога, а CMAKE_CURRENT_BINARY_DIR гарантирует, что выходные данные будут идти в текущем каталоге сборки.
Немного лучшая итерация - заменить tar
на ${CMAKE_COMMAND} -E tar
, поскольку это не зависит от доступности командной строки tar
. Таким образом, при запуске make tar
:
все файлы заголовков смолятся.
SET(HEADER_FILES my.h another.h)
SET(PROGNAME myprog)
ADD_CUSTOM_TARGET(tar ${CMAKE_COMMAND} -E tar -czvf
${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.tar.gz ${HEADER_FILES}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
Еще лучшая итерация - использовать функции CPack для создания исходных или бинарных tar-файлов, но это немного сложнее и может не соответствовать вашим потребностям.