2016-09-28 2 views
1

J'essaye de créer un paquet d'installation avec CMake et CPack. Tout fonctionne bien, mais je voudrais réduire drastiquement la quantité de code en copiant entièrement mon dossier de ressources avec un appel au lieu d'un pour chaque sous-dossier.CMake + CPack: Installer le répertoire entier (y compris les sous-dossiers)

Jusqu'à présent, je ne l'installation sage composant de la façon suivante:

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") 
... 
    ... 

est-il un moyen propre à copier/installer le dossier complet des ressources, y compris tous les sous-dossiers?

Répondre

1

Le flux de commande install(DIRECTORY) existe spécifiquement pour l'installation du répertoire avec ses sous-répertoires et fichiers.

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

ou même

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

copiera resource répertoire dans l'arborescence source dans le répertoire d'installation. Voir documentation on install pour plus d'informations.