我需要使用bazel来管理我们的源代码依赖关系,这样最终的构建产品就纯粹是工具链、linux发行版中数量少得可怜的文件和源代码本身的函数。这意味着要构建像libz、libssl、libcrypto、libcurl。。。
- 这些依赖关系相互依赖
- 他们有自己的原生(大部分基于自动工具(构建系统,基于
./configure --prefix=foo && make -j && make install
之类的东西
在我看来,Bazel不太适合这个用例。特别是,我们需要为每个库手动重新创建make install
步骤,以便从execroot中复制make install
工件。我不清楚下一个依赖项是如何重用这些产品的。因此,例如,在构建zlib时,我们生成libz.a
和一堆头文件。然后,在构建libcrypto.a
时,我们需要修改CPPFLAGS
和LDFLAGS
以指向zlib";安装";。
这让我觉得太迂腐了,以至于它乞求代码生成来生成BUILD文件。
是否有一种不需要定制复制";进行安装";将逻辑转化为一个genrule?
查看rules_forging_cc(https://github.com/bazelbuild/rules_foreign_cc)。这包含了与国外构建系统(make、autotools+make、cmake等(集成的规则