巴泽尔:建立依赖关系树



我需要使用bazel来管理我们的源代码依赖关系,这样最终的构建产品就纯粹是工具链、linux发行版中数量少得可怜的文件和源代码本身的函数。这意味着要构建像libz、libssl、libcrypto、libcurl。。。

  1. 这些依赖关系相互依赖
  2. 他们有自己的原生(大部分基于自动工具(构建系统,基于./configure --prefix=foo && make -j && make install之类的东西

在我看来,Bazel不太适合这个用例。特别是,我们需要为每个库手动重新创建make install步骤,以便从execroot中复制make install工件。我不清楚下一个依赖项是如何重用这些产品的。因此,例如,在构建zlib时,我们生成libz.a和一堆头文件。然后,在构建libcrypto.a时,我们需要修改CPPFLAGSLDFLAGS以指向zlib";安装";。

这让我觉得太迂腐了,以至于它乞求代码生成来生成BUILD文件。

是否有一种不需要定制复制";进行安装";将逻辑转化为一个genrule?

查看rules_forging_cc(https://github.com/bazelbuild/rules_foreign_cc)。这包含了与国外构建系统(make、autotools+make、cmake等(集成的规则