2016-09-28 157 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