天天看点

Ninja构建系统入门--GN与Ninja构建过程开始结束

Ninja构建系统入门--GN与Ninja构建过程

  • 开始
    • GN构建系统
    • 搭建
  • 结束

开始

GN构建系统

GN是一种元构建系统,生成Ninja构建文件(Ninja build files),相较GYP而言,具有如下优点:

  • 可读性更好,更容易编写和维护。
  • 速度更快,谷歌官方给的数据是20倍的速度提升。
  • 修改GN文件后,执行ninja构建时会自动更新Ninja构建文件。
  • 更简单的模块依赖,提供了public_deps, data_deps等,在GYP中,只有一种目标依赖,导致依赖关系错综复杂,容易引入不必要的模块依赖。
  • 提供了更好的工具查询模块依赖图谱。这在GYP构建系统中是一个噩梦,要查一个目标依赖哪些模块或者一个模块被哪些目标依赖几乎是不可能的。
  • 更好的调试支持。在GN中,只需要一条print语句就可以解决。

搭建

sudo apt-get install clang ninja-build re2c cmake
git clone [email protected]:MeekJeen/GN.git 
cd GN
python3 build/gen.py //本目录下生成out目录
ninja -C out //生成gn
cd examples/simple_build
../../out/gn gen out/default //编译生成.ninja文件
../../out/gn args --list out/default //显示参数
ninja -C out/default -v //ninja使用.ninja脚本编译生成可执行程序
cd out/default
./hello
Hello, world
           
Ninja构建系统入门--GN与Ninja构建过程开始结束
Ninja构建系统入门--GN与Ninja构建过程开始结束
Ninja构建系统入门--GN与Ninja构建过程开始结束
Ninja构建系统入门--GN与Ninja构建过程开始结束

结束

Ninja构建系统入门--GN与Ninja构建过程开始结束

继续阅读