2016-09-28 87 views
1

我试图用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

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

相关问题