0

考虑我有一个 py_binary :

py_binary(
    name = "mock",
    srcs = ["mock.py"],
    args = [
        "$(location @mockref//mockpackage)",
    ],
    data = [
        "@mockref//:mockfile",
    ],
    deps = [
        requirement("somerequirement"),
    ],
)

如果 mock.py 接受--somearg使用参数解析器命名的命令行参数,我如何通过 bazel 文件中的 args 字段传递这个参数而不在bazel build命令中传递参数?

4

1 回答 1

0

args属性仅与以下bazel run命令一起使用:

https://docs.bazel.build/versions/main/be/common-definitions.html#binary.args

要将二进制文件作为构建的一部分运行,通常您会使用genrule自定义 Starlark 规则。就像是:

genrule(
  name = "gen_mock_output",
  outs = ["mock_output"],
  exec_tools = [":mock"],
  cmd = "$(location :mock) --output $@",
)

然后您将构建 genrule 的输出:
bazel build mock_output

或使用 genrule 的输出作为另一个目标的输入

于 2021-12-06T20:26:03.333 回答