Я создал список файлов, используя:
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()
... но это раздражает. Конечно, есть более простой способ?
(Я не вижу ничего в документации по установке, хотя...)