Bazel可以使用多个工作区文件吗?

Bazel可以使用多个工作区文件吗?,bazel,toolchain,abseil,Bazel,Toolchain,Abseil,假设我正在使用一个特定的CROSSTOOL+工具链,例如,我想编译一个第三方库,例如使用该工具链。是否可以在不修改第三方库的工作区的情况下执行此操作 如果我必须修改工作区,那么为工具链repo添加local\u repository()规则似乎足够合理。但在这种情况下,除非我也从工具链工作区复制新的\u http\u归档()(它提取实际的工具链二进制文件),否则我无法让它工作。需要添加本地存储库的依赖项对我来说似乎很奇怪-它们不应该被拉进来吗 我可以对工具链repo进行更改,但我更希望不必修补或

假设我正在使用一个特定的
CROSSTOOL
+工具链,例如,我想编译一个第三方库,例如使用该工具链。是否可以在不修改第三方库的
工作区的情况下执行此操作

如果我必须修改工作区,那么为工具链repo添加
local\u repository()
规则似乎足够合理。但在这种情况下,除非我也从工具链工作区复制
新的\u http\u归档()
(它提取实际的工具链二进制文件),否则我无法让它工作。需要添加本地存储库的依赖项对我来说似乎很奇怪-它们不应该被拉进来吗

我可以对工具链repo进行更改,但我更希望不必修补或修改第三方软件包。更改编译器似乎不需要修改要构建的包

需要添加本地存储库的依赖项对我来说似乎很奇怪-它们不应该被拉进来吗

不幸的是,工作区文件不是递归的,所以传递依赖项不会自动拉入。使用宏(如中的
go\u rules\u dependencies()
)拉入依赖项的依赖项是一种常见的模式。管理外部存储库的Bazel子团队有一个解决这个问题的路线图条目

需要添加本地存储库的依赖项对我来说似乎很奇怪-它们不应该被拉进来吗


不幸的是,工作区文件不是递归的,所以传递依赖项不会自动拉入。使用宏(如中的
go\u rules\u dependencies()
)拉入依赖项的依赖项是一种常见的模式。管理外部存储库的Bazel子团队有一个解决这一问题的路线图条目。

我已经得出了结论,并希望宏是通用的,可以与其他回购协议一起使用,但它只从预定义列表中提取DEP。虽然没有我所希望的那么有用,但还是很有用。我已经得出了结论,并希望宏是通用的,可以用于其他回购协议,但它只能从预定义列表中提取DEP。虽然没有我希望的那么有用,但还是有用的。