He creado una lista de archivos usando:¿Cómo puedo instalar una jerarquía de archivos usando cmake?
file(GLOB_RECURSE DEPLOY_FILES "${PROJECT_SOURCE_DIR}/install/*")
Quiero instalar todos estos archivos en/usr/miproyecto/pero quiero mantener el árbol de archivos en la carpeta instalada:
install/junk
install/other/junk2
install/other/junk3
si uso:
install(FILES ${DEPLOY_FILES} DESTINATION "usr/myproject")
Todos los archivos terminan en/usr/miproyecto como:
/usr/myproject/junk
/usr/myproject/junk2
/usr/myproject/junk3
¿Cómo puedo hacer que el comando de instalación realice un seguimiento de las rutas relativas?
he trabajado en torno al tema por hacerlo de forma manual en un bucle for:
set(BASE "${PROJECT_SOURCE_DIR}/install")
foreach(ITEM ${DEPLOY_FILES})
get_filename_component(ITEM_PATH ${ITEM} PATH)
string(REPLACE ${BASE} "" ITEM_PATH ${ITEM_PATH})
install(FILES ${ITEM} DESTINATION "usr/myproject${ITEM_PATH}")
endforeach()
... pero esto es molesto para hacerlo. Seguramente hay una manera más fácil?
(no puede ver nada en la documentación de instalación, aunque ...)
Es simplemente divertido cómo es difícil hacer una operación trivial ** 'cp -r' **. – ulidtko