
回复
OpenHarmony使用gn+ninja来维护开源项目的构建。之前没有接触过gn+ninja,是时候系统性的来学习下了。边学边记录下学习过程,希望对同样需要学习gn+ninja的朋友有所帮助。
这一篇,我们来学习下GN参考文档GN Reference中内容Language and grammar for GN build files,通过该文的学习来掌握编写GN构建文件的需要具备的知识。
Ninja 是 Google 推出的注重速度的构建工具,通过将编译任务并行组织,大大提高了构建速度。Ninja 的目标是成为汇编程序。
构建系统在需要做出决策时变得缓慢。当您处于编辑 - 编译周期时,您希望它尽可能快 - 您希望构建系统执行必要的最少工作以确定需要立即构建的内容。
Ninja 包含描述任意依赖图所需的最基本功能。它缺乏语法使得无法表达复杂的决策。
相反,Ninja 旨在与生成其输入文件的单独程序一起使用。生成器程序(如 ./configure 在 autotools 项目中找到的)可以分析系统依赖性并尽可能多地做出尽可能多的决策,以便增量构建保持快速。超越自动工具,甚至构建时决定,比如 “我应该使用哪个编译器标志?” 或 “我应该构建调试或发布模式二进制文件?” 属于 .ninja 文件生成器。
本篇,我们学习了GN构建文件的语言语法,该文的学习可以掌握编写GN构建文件的需要具备的知识。