CMake + CPack:安装整个目录(包括子文件夹)

CMake + CPack: Install entire directory (including subfolders)

我正在尝试使用 CMake 和 CPack 创建安装包。一切正常,但我想通过一次调用而不是每个子文件夹一次复制我的资源文件夹来大幅减少代码量。

到目前为止,我按照以下方式进行组件智能安装:

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

是否有一种干净的方法来复制/安装包括所有子文件夹在内的整个资源文件夹?

命令流 install(DIRECTORY) 专门用于安装目录及其子目录和文件。

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

甚至

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

会将源码树中的resource目录复制到安装目录。有关详细信息,请参阅 documentation on install