Как установить иерархию файлов с помощью CMake?

Я создал список файлов, используя:

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()

...но это раздражает. Наверняка есть способ проще?

(Хотя я ничего не вижу в документации по установке...)

33
задан Peter Mortensen 8 January 2019 в 02:18
поделиться