我正在尝试查询具有公开可见性的Bazel目标列表。我们的一些Bazel目标已明确指定visibility
,例如:
cc_library(
name = "xxx_util",
visibility = ["//visibility:public",],
...
)
虽然大多数目标隐式公开,因为他们的BUILD
文件具有指定的默认公开可见性,例如
package(default_visibility = ["//visibility:public"])
我需要一个包含所有此类目标的列表,以便在构建Bazel工作区后自动将其输出复制到某个位置。
我是Bazel的新手,无法弄清楚查询......
答案 0 :(得分:4)
请看这个例子:https://docs.bazel.build/versions/master/query-how-to.html#which-of-those-are-small-medium-large
您需要以下内容:
bazel query 'attr(visibility, "//visibility:public", //path/to/package:*)'
更新(2017-01-04):@Curious询问是否要查询目标的有效可见性,即考虑default_visibility
。 AFAIK Bazel不支持这一点;见issue #4388。
答案 1 :(得分:1)
我认为先前的答案确实涵盖了针对可见性属性受限结果的属性查询。为了后代,我要补充一点,如果您只想从当前目录中查找所有目标,则可以执行以下操作:
bazel query ...