##Bazel是什么? Bazel是一个构建工具,例如一个可以运行编译和测试来组装软件,跟Make,Ant,Gradle, Buck, Pants和Maven一样的工具。 ##Bazel有什么特殊之处 Bazel是设计用来适合Google的软件开发的模式。有以下几个特点:
*多语言支持:Bazel支持Java,Objective-C和C++,可以扩展来支持任意的编程语言
*高级别的构建语言:工程是通过BUILD语言来描述的。BUILD语言以简洁的文本格式,描述了由多个小的互相关联的库,二进制程序和测试程序来组成的一个项目。而与之对比,Make这类的工具需要描述各个单独的文件和编译的命令
*多平台支持:同一套工具和同样的BUILD文件可以用来构建不同架构和不同平台的软件。在Google,我们使用Bazel来构建在我们数据中心系统中运行的服务器端程序和在手机上运行的客户端应用程序。
* 可重现:在BUILD文件中,每个库,测试程序,二进制文件必须明确完整地指定直接依赖。当修改源代码文件后,Bazel使用这个依赖信息就可以知道哪些必须重新构建,哪些任务可以并行执行。这意味者所有的构建都是增量形式的并能够每次都生成相同的结果。
* 可扩展:Bazel可以处理巨大的构建;在Google,一个服务器端程序超过100k的源码是常有的事情,如果没有文件被改动,构建过程需要大约200ms
##为什么Google不使用...? * Make,Ninja: 这些工具都