bazel - 我可以依赖匹配模式的所有 Bazel 目标,而不单独列出它们吗?

标签 bazel

我有一个看起来像这样的目录结构:

some-root/
└── my-stuff/
    ├── BUILD
    ├── foo/
    │   └── BUILD
    ├── bar/
    │   └── BUILD
    └── baz/
        └── BUILD

我想要一个像 //some-root/my-stuff:update 这样的目标运行所有 //some-root/my-stuff/foo:update , //some-root/my-stuff/bar:update , //some-root/my-stuff/baz:update .

我可以通过将每个目标列为依赖项来做到这一点。但是,如果我有很多这样的目录并且我希望能够添加更多,这将变得很痛苦(添加一堆子目录很容易而错过向父 BUILD 文件添加一个)。

有没有办法做通配符标签或以其他方式从文件路径中发现标签?我可以做 bazel test //some-root/my-stuff/...在路径下运行所有​​测试,但我似乎无法在 BUILD 中使用该模式文件,我想要的更像是 bazel run //some-root/my-stuff/...:update这也不起作用。

最佳答案

您可以获得名称为 update 的所有标签从命令行:

bazel query "attr(name, '^update$', //...)"

并获取查询的输出并手动编辑您的依赖项。

但不幸的是你不能把它变成 genquery rule (这将生成要依赖的目标列表),因为

queries containing wildcard target specifications (e.g. //pkg:* or //pkg:all) are not allowed

关于bazel - 我可以依赖匹配模式的所有 Bazel 目标,而不单独列出它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61987996/

相关文章:

android - 如何将 Android 的导航架构组件与 Bazel 一起使用?

使用 Bazel 增强 Datanucleus

bazel - 使用 bazel 配置 pylint 的最佳方法

tensorflow - bazel 从源代码构建 Tensorflow

build - Bazel cuda_add_executable 等效?

java - Bazel sha256 校验和

c++ - 如何强制 Bazel 将库路径设置为所需的路径?

bazel - 在终端中轻松获取 bazel-bin 目录

bazel - 如何将 `config_setting()` 加载到我的 `.bzl` 文件中?

c++ - 如何将第 3 方 C 库添加到 tensorflow?