1

在一个.bzl文件中,
我指定了一个程序来生成一些代码。它看起来像这样:

def generate_code():
    native.genrule(
        name = "foo",
        outs = ["file.hpp"],
        tools = ["//path/to:tool"],
        cmd = $(location path/to:tool) $(@D)
    )

这工作正常,
但问题是该工具可能会生成比outs.
我正在尝试找到一种方法,如果生成的文件多于指定的文件,则让 bazel 停止构建,或者让输出自动生成所有内容。

4

1 回答 1

0

如果生成了额外的意外文件,我不知道有一种通用的方法来消除 bazel 错误。

我可以推荐的一件事是将您的工具包装在另一个工具中,该工具验证目标目录中的输出文件,并且只有在没有生成意外文件时才返回成功。

至于有意将所有文件包含在输出目录中的通用解决方案,请考虑使用actions.declare_directory并创建云雀规则而不是使用native.genrule.

于 2018-06-11T21:31:42.123 回答