gn/ninja: 谷歌的新一代项目构建系统简介

发布时间 2023-08-03 17:55:39作者: petercao

gn/ninja 背景

gn是谷歌开源的一个元构建系统(meta-build system)。这个”元构建“的意思是,gn并不直接帮你构建项目,而是帮你产生构建项目的ninja文件,然后你再用ninja去构建项目。或者你可以这么理解,gn相当于帮你生成Makefile,然后你再用make去编译构建你的项目。

这么做的原因是,ninja虽然有构建速度快的优点,但它更多是为机器解析设计的,人能看懂ninja文件,但要为项目手写ninja文件就比较繁琐。gn结合ninja,能够让我们方便的创建和维护项目,同时又能享受ninja的编译性能。

目前已经有不少项目使用gn/ninja,其中最著名的之一就是Chromium(谷歌Chrome浏览器的开源版本)。Chromium代码库庞大,依赖关系复杂,需要支持多个编译目标,gn/ninja组合正适合这样的大型C++项目的构建。

 

安装和基本使用流程

以Ubuntu Linux为例,首先需要先安装ninja:

sudo apt install ninja

gn的安装,可以从官网下载代码编译:

git clone https://gn.googlesource.com/gn
cd gn
python build/gen.py
ninja -C out

然后把二进制文件放到你的路径里即可。

gn的基本使用流程,首先用gn生成ninja文件,然后用ninja来编译构建项目。

gn gen out
ninja -C out/

 

refs:

https://pingzhou.site/notes/gn_101.html

https://www.jianshu.com/p/1ca0d04376a5

Quick start guide: https://gn.googlesource.com/gn/+/main/docs/quick_start.md

Reference: https://gn.googlesource.com/gn/+/main/docs/reference.md