如何查询Bazel中特定目标可访问的目标列表?
查询Bazel目标可访问的所有目标方法
完全可行,你可以通过Bazel的查询语言直接筛选出//my:foo能依赖的所有目标,具体方法如下:
基础查询命令
使用visible查询函数,直接获取工作区内所有对//my:foo可见的目标:bazel query 'visible(//my:foo, //...)'其中
//...代表工作区中的所有目标,visible(target, set)函数会返回set里所有允许target依赖的目标。过滤测试目标(可选)
如果不需要包含测试类目标,可以追加过滤条件:bazel query 'visible(//my:foo, //...) - kind(".*test", //...)'补充说明可见性逻辑
目标的可见性规则决定了是否能被//my:foo依赖:- 标记为
//visibility:private的目标,仅同一package内的目标可访问; - 标记为
//visibility:public的目标,所有目标都可访问; - 若目标指定了
visibility = ["//my:__pkg__"]这类规则,则//my包下的所有目标(包括//my:foo)都能访问它。
- 标记为
内容的提问来源于stack exchange,提问作者Gunnar
相关产品推荐
相关产品推荐

