bazel是Google开源的一款编译工具,具有支持多种语言,编译速度快,处理依赖方便,编写编译规则简单的优点。
有人说,bazel是流氓工具,为什么呢?因为它不仅QJ你们组,还QJ你的兄弟组。意思是说一个组用了bazel,其他组为了协同工作,也必须用bazel,否则作为一个项目整体没法管理。
这在一定程度上是对的,因为一个项目想打包成一个整体,如果其中一部分使用bazel编译,另外一部分写makefile编译,那么这两个部分没法生成一个完整的动态链接库给外界使用。
退而求其次,能不能接受一个项目提供多个动态链接库打包呢?如果能接受,那么在项目一部分使用bazel编译,另一部分写makefile编译的情况下,也是可以管理的。因为使用bazel可以生成动态链接库so文件,makefile也可以,把两个放一起,问题就解决了。
这篇文章简单介绍使用bazel生成C++动态链接库文件的方法。
需要的前提知识有:
1. 熟悉gcc的编译和链接命令;
2. 熟悉bazel的使用方法,知道WORKSPACE和BUILD文件的作用;
3. 熟悉bazel的规则,比如cc_binary,cc_import,可以参考https://docs.bazel.build/versions/master/be/c-cpp.html
使用bazel生成动态链接库文件其实很简单,使用cc_binary规则就可以了,如果你仔细阅读baze