构建系统简介
在探讨chromium的最新GN构建系统之前,回顾一下软件开发中的构建系统。
构建系统的需求是随着软件规模的增大而提出的。如果只是做软件编程训练,通常代码量比较小,编写的源代码只有几个文件。比如你编写了一段代码放入helloworld.c文件中,要编译这段代码,只需要执行以下命令:gcc helloworld.c
当软件规模逐渐增加,这时可能有几十个源代码文件,而且有了模块划分,有的要编译成静态库,有的要编译成动态库,最后链接成可执行代码,这时命令行方式就捉襟见肘,需要一个构建系统。
常见的构建系统有GNU Make(通过MakeFile定义构建)。需要注意的是,构建系统并不是取代gcc这样的工具链,而是定义编译规则,最终还是会调用工具链编译代码。
MakeFile(文本) -> Make(工具) -> gcc
当软件规模进一步扩大,特别是有多平台支持需求的时候,编写GNU Makefile将是一件繁琐和乏味的事情,而且极容易出错。这时就出现了生成Makefile的工具,比如cmake、AutoMake等等,这种构建系统称作元构建系统(meta build system)。
在Linux上软件仓库的概念还没有普及的时候,通常我们安装软件的步骤是:
- ./configure
- make
- make install
第一步就是调用AutoTool工具,根据系统环境(Linux的版本众多,软件安装情况也不一样),生成GNU Makefile。
cmake(等生成Makefile的工具) -> MakeFile(文本) -> Make(工具) -> gcc
关于gcc、makefile、make、cmake的内容请参考: