如何使 genrule 的输出有选择地可见?

How can I make the outputs of a genrule selectively visible?

假设我有一个生成多个输出的 genrule:

genrule(
    name = "gen",
    outs = ["a", "b"],
    ...,
)

我怎样才能给 a public 可见性而不是 b

我尝试过的一些方法不起作用:

不直接; genrule 的可见性是其输出的可见性。但是,您可以将 genrule 目标设为私有并为 a 添加一个 public aliasfilegroup:

genrule(
   name = "g",
   outs = ["a", "b"],
)
alias(
   name = "a-public",
   actual = ":a",
   visibility = ["//visibility:public"],
)
filegroup(
   name = "multiple-public",
   srcs = [":a", ":b"],
   visibility = ["//visibility:public"],
)