【发布时间】:2021-05-26 13:38:46
【问题描述】:
我正在诊断一些 codegen,它由一些由自定义 bazel 规则支持的 bazel 宏支持。
#projX/BUILD
macro_foo(
name = "foo_data"
...
)
py_binary(
name = "client_foo_data",
deps = [":foo_data"]
...
)
如果我构建原始宏目标,代码生成实际上不会执行。如果我构建一个反向依赖于foo_data 的目标,代码生成会执行。
bazel build //projX:foo_data # doesn't trigger codegen
bazel build //projY:client_foo_data # does codegen
如何找出给定目标的所有不同目标名称?我怀疑我需要构建其中一种特定的变体来满足 codegen 的需求;某种 bazel 查询或在宏下解包目标的东西应该可以解决问题。
VScode Codelens 构建/测试链接
除了直接适用之外,在 VSCode 中,它用于装饰我的宏和其他扩展到多个 bazel 目标的东西,我可以单击链接来启动构建或测试(一些升级对我来说失去了这个功能,我过去常常依靠它来找到这些目标变体)。这就是他们所谓的 codelens 功能
CodeLens 链接在 BUILD 文件中,只需单击目标即可直接启动构建或测试
https://github.com/bazelbuild/vscode-bazel#features
您可以在这里看到注释“另一个快捷方式” https://kig.re/2020/03/21/building-intellij-bazel-plugin.html
了解 bazel 插件用于发现从给定目标展开的所有特定目标变体的机制应该指向正确的方向。如果围绕这个细节有一些概念/词汇/术语,知道这也将有助于理解正在发生的事情。
【问题讨论】:
-
我应该注意从 codlens 部分到达这里的任何其他人,它实际上是您的 bazel 扩展设置中的配置。我的在某些时候未选中,因此我在不知不觉中禁用了该功能。
标签: bazel