Я создал список файлов, используя:
file(GLOB_RECURSE DEPLOY_FILES "${PROJECT_SOURCE_DIR}/install/*")
Я хочу установить все эти файлы в /usr/myproject/
, но я хочу сохранить дерево файлов в установленной папке:
install/junk
install/other/junk2
install/other/junk3
Если я использую:
install(FILES ${DEPLOY_FILES} DESTINATION "usr/myproject")
Все файлы попадают в /usr/myproject как:
/usr/myproject/junk
/usr/myproject/junk2
/usr/myproject/junk3
Как заставить команду установки отслеживать относительные пути?
Я работал над проблемой, делая это вручную в цикле 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()
...но это раздражает. Наверняка есть способ проще?
(Хотя я ничего не вижу в документации по установке...)