Bazel 可以使用多个 WORKSPACE 文件吗?

Can Bazel use multiple WORKSPACE files?

假设我正在使用特定的 CROSSTOOL + 工具链,例如 this one, and I want to compile a 3rd party lib such as abseil 使用该工具链。是否可以在不修改第 3 方库的情况下这样做 WORKSPACE?

如果我必须修改工作区,为工具链回购添加 local_repository() 规则似乎足够合理。但是在这种情况下,除非我 also 从工具链中复制 new_http_archive() entry (它会引入实际的工具链二进制文件),否则我无法让它工作工作区。需要添加 local_repository 的依赖项对我来说似乎很奇怪 - 他们不应该被拉进来吗?

我可以对工具链回购进行更改,但宁愿不必打补丁或以其他方式修改第 3 方包。更改编译器似乎不需要修改要构建的包。

Needing to add the local_repository's dependencies seems strange to me - shouldn't they get pulled in?

不幸的是,WORKSPACE 文件不是递归的,因此不会自动引入传递依赖项。使用宏引入依赖项的依赖项是一种常见的模式,例如 rules_go. The Bazel subteam managing external repositories has a roadmap entry addressing this here.

中的 go_rules_dependencies()