gn/ninja: 谷歌的新一代项目构建系统简介
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