在bazel项目中使用大型非bazel依赖项

在bazel项目中使用大型非bazel依赖项,bazel,Bazel,我想在bazel项目中使用一个非常大的非bazel系统。明确地这个依赖性提供了大量的Python、C和C++库,这些库是使用自己的手工滚动构建系统构建的。显然,我希望避免将整个构建系统转换为bazel 大体上,我这样做的最好方式是什么?本能的做法是使用自定义存储库规则下载源代码(因为它被分割到多个存储库中),然后使用genrule调用ROS2构建系统。然后为我需要的每个组件编写简单的cc\u导入和py\u库规则 然而,我在需要调用外部构建系统的地方遇到了问题。似乎genrules需要指定一个输出

我想在bazel项目中使用一个非常大的非bazel系统。明确地这个依赖性提供了大量的Python、C和C++库,这些库是使用自己的手工滚动构建系统构建的。显然,我希望避免将整个构建系统转换为bazel

大体上,我这样做的最好方式是什么?本能的做法是使用自定义存储库规则下载源代码(因为它被分割到多个存储库中),然后使用
genrule
调用ROS2构建系统。然后为我需要的每个组件编写简单的
cc\u导入
py\u库
规则

然而,我在需要调用外部构建系统的地方遇到了问题。似乎
genrule
s需要指定一个输出文件列表,而我希望它能够提供一个完整的
build
目录


在我花更多的时间在这个问题上之前,我想我应该问一下,既然我是bazel的新手,我的思路是否正确。这是一个好策略吗?你将如何处理这个问题?是否有其他项目主要使用bazel,但以这种方式调用其他构建系统,我可以看一下?

最近,您可以使用rules\u foreign\u cc调用本机CMake或生成/配置类似的项目。

是的,bazel(不仅仅是gen\u rule)需要一个输入和输出的明确列表。你能澄清一下你想用Bazel构建什么吗。@恐怕我不明白你要寻找的哪些细节不在问题中?这看起来很有希望,我会进一步调查。有兴趣人士的连结: