我使用以下方法创建了一个文件列表:
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()
...但这很烦人。肯定有更简单的方法吗?
(虽然我在安装文档中看不到任何内容......)