You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:40:58