Bazel 查询特定类型的源文件
Bazel query for specific type of source files
有没有办法使用 bazel query
来 return 规则内特定属性的内容?我希望能够打印出具有完整 (workspace-relative) 路径的导出 headers(cc_library
的 hdrs
属性)列表。
完整的故事是我想执行 bazel build
然后使用外部脚本打包工件供另一个构建系统使用,所以我需要能够获取 headers 和编译库。
对于 headers,我想我会查询标记为公开可见的 cc_library
目标,获取它们依赖项的传递闭包,然后取它们的并集hdrs
属性作为我需要复制的 header 个文件。
我可以使用以下方法获取依赖列表:
bazel query 'kind("cc_library",
deps(attr("visibility",
"//visibility:public",
//... except //tools/...)
)
)'
我可以通过嵌套上面的代码得到一个完整的源文件列表:
bazel query 'kind("source file",
deps(kind("cc_library",
deps(attr("visibility",
"//visibility:public",
//... except //tools/...)
)
))
)' --noimplicit_deps
但是,从源列表中不清楚哪些 header 是 hdrs
属性中的 "exported",哪些是未通过 srcs
属性导出的。有没有bazel的查询功能可以把BUILD规则的特定属性的内容挑出来?
你想要 labels function.
有没有办法使用 bazel query
来 return 规则内特定属性的内容?我希望能够打印出具有完整 (workspace-relative) 路径的导出 headers(cc_library
的 hdrs
属性)列表。
完整的故事是我想执行 bazel build
然后使用外部脚本打包工件供另一个构建系统使用,所以我需要能够获取 headers 和编译库。
对于 headers,我想我会查询标记为公开可见的 cc_library
目标,获取它们依赖项的传递闭包,然后取它们的并集hdrs
属性作为我需要复制的 header 个文件。
我可以使用以下方法获取依赖列表:
bazel query 'kind("cc_library",
deps(attr("visibility",
"//visibility:public",
//... except //tools/...)
)
)'
我可以通过嵌套上面的代码得到一个完整的源文件列表:
bazel query 'kind("source file",
deps(kind("cc_library",
deps(attr("visibility",
"//visibility:public",
//... except //tools/...)
)
))
)' --noimplicit_deps
但是,从源列表中不清楚哪些 header 是 hdrs
属性中的 "exported",哪些是未通过 srcs
属性导出的。有没有bazel的查询功能可以把BUILD规则的特定属性的内容挑出来?
你想要 labels function.