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

时间:2016-09-28 18:14:32

标签: cmake cpack

我尝试使用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")
...
    ...

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

1 个答案:

答案 0 :(得分:3)

命令流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