代码之家  ›  专栏  ›  技术社区  ›  stefanobaghino

清理bazel中无法访问的生成文件

  •  0
  • stefanobaghino  · 技术社区  · 7 年前

    假设我有一个非常小的项目 WORKSPACE 在项目根目录中定义的一个包 touch 创建名为 a ,如下所示:

    genrule(
      name = "target",
      cmd = "touch $@",
      outs = ["a"],
    )
    

    如果我现在跑

    bazel build //:target
    

    该包将被“构建”,并且 文件将在下面提供 bazel-genfiles

    假设我现在改变 BUILD 要将输出写入其他文件,请执行以下操作:

    genrule(
      name = "target",
      cmd = "touch $@",
      outs = ["b"],
    )
    

    构建相同的目标将导致文件 b 在以下条件下可用 火箭筒 但仍然会存在,即使此时无法从构建定义的上下文中“访问”。

    有没有办法让bazel执行某种“垃圾收集”并删除以前生成的文件(可能还有其他内容),这些文件根据当前生成定义不再可访问,而不删除整个目录?这个 bazel clean 指挥部似乎采取了后一种行为。

    There seems to be a feature in the works ,但显然它不能按需执行,而是在达到某个阈值时自动执行。

    0 回复  |  直到 7 年前
        1
  •  0
  •   László    7 年前

    bazel clean 是移除这些的方法。

    如果使用沙箱进行构建,则过时的输出对操作不可见。(尚未在Windows上提供,仅在Linux和MacOS上提供。)

    这些文件会带来什么麻烦?