2016-09-28 4 views
1

Я пытаюсь создать установочный пакет с CMake и CPack. Все работает отлично, но я хотел бы значительно сократить объем кода, полностью скопировав папку ресурсов одним вызовом вместо одного для каждой подпапки.CMake + CPack: установить весь каталог (включая подпапки)

До сих пор, я компонент мудрая установка следующим образом:

set(RESOURCES_CALIBRATION_DIR resources/calibration) 
file(GLOB RESOURCES_CALIBRATION "${CMAKE_SOURCE_DIR}/${RESOURCES_CALIBRATION_DIR}/*") 
install(FILES ${RESOURCES_CALIBRATION} DESTINATION ${RESOURCES_CALIBRATION_DIR} COMPONENT ResourcesCalibration) 

set(RESOURCES_CURSORS_DIR resources/cursors) 
file(GLOB RESOURCES_CURSORS "${CMAKE_SOURCE_DIR}/${RESOURCES_CURSORS_DIR}/*") 
install(FILES ${RESOURCES_CURSORS} DESTINATION ${RESOURCES_CURSORS_DIR} COMPONENT ResourcesCursors) 

... 
    ... (repeat for every folder of my resources folder) 

set(CPACK_COMPONENTS_ALL applications ResourcesCalibration ResourcesCursors ...) 
set(CPACK_COMPONENT_RESOURCESCALIBRATION_GROUP "resources") 
set(CPACK_COMPONENT_RESOURCESCURSORS_GROUP "resources") 
... 
    ... 

Есть чистый способ для копирования/установить всю папку ресурсов, включая все вложенные папки?

ответ

1

Командный поток install(DIRECTORY) существует специально для установки каталога с его подкаталогами и файлами.

install(DIRECTORY ${CMAKE_SOURCE_DIR}/resources/ 
     DESTINATION resources 
     COMPONENT ResourcesCursors) 

или даже

install(DIRECTORY ${CMAKE_SOURCE_DIR}/resources 
     DESTINATION . 
     COMPONENT ResourcesCursors) 

скопирует resource каталог в дереве исходного каталога установки. См. documentation on install для получения дополнительной информации.