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

Bazel genrule构建时如何将cc_binary的runfiles一同打包为zip

解决方案

你原有配置的问题在于仅将二进制目标本身加入了构建依赖,Bazel默认不会主动构建并传递runfiles目录到genrule的执行上下文,因此打包时只会包含二进制文件本身。

修改方案

直接在genrule中显式声明对runfiles隐式目标的依赖即可,修改后的规则如下:

genrule(
  name = "zip_binary",
  srcs = [
    ":binary",
    # 依赖Bazel自动生成的runfiles隐式目标,触发runfiles目录的构建
    ":binary.runfiles",
  ],
  outs = [
    "binary.zip",
  ],
  # 同时打包二进制文件和对应的runfiles目录
  cmd = "zip -r $(OUTS) $(locations :binary) $(locations :binary.runfiles)",
)

注意事项

  • 确保你的cc_binary规则没有配置enable_runfiles = False,该参数会关闭runfiles目录的生成功能
  • 最终生成的zip包解压后目录结构和Bazel运行时的目录结构完全一致,直接执行解压后的二进制文件即可正常加载所有关联的runfiles资源

内容的提问来源于stack exchange,提问作者Dig-Doug

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:05