CMake ARCHIVE_CREATE生成Zip时如何保持原目录结构?
CMake ARCHIVE_CREATE 保持压缩包目录结构一致的解决方法
你的问题出在file(ARCHIVE_CREATE)默认的路径处理逻辑:当PATHS指定具体目录时,CMake会直接将该目录下的所有内容打包到压缩包根目录,而非保留原目录层级。要让压缩包结构和原目录完全一致,需要通过WORKING_DIRECTORY参数调整打包的基准路径。
修改后的代码如下:
file(ARCHIVE_CREATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/bundle.zip" PATHS "demo" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/assets" FORMAT "zip" VERBOSE )
原理说明
WORKING_DIRECTORY指定打包操作的工作目录为${CMAKE_CURRENT_SOURCE_DIR}/assets(即原demo目录的父目录)。PATHS设置为demo,表示从工作目录下打包这个子目录。- 最终生成的
bundle.zip中会保留完整的demo/blob/matrix.avif和demo/scripts/main.lua路径结构,和原目录完全一致。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

