GN是一种元构建系统,生成Ninja构建文件(Ninja build files),相较GYP而言,具有如下优点:
可读性更好,更容易编写和维护。
速度更快,谷歌官方给的数据是20倍的速度提升。
修改GN文件后,执行ninja构建时会自动更新Ninja构建文件。以前用GYP的时候就有过修改了GYP,而忘记使用gyp命令重新生成Ninja构建文件的尴尬。
更简单的模块依赖,提供了public_deps, data_deps等,在GYP中,只有一种目标依赖,导致依赖关系错综复杂,容易引入不必要的模块依赖。
提供了更好的工具查询模块依赖图谱。这在GYP构建系统中是一个噩梦,要查一个目标依赖哪些模块或者一个模块被哪些目标依赖几乎是不可能的。
更好的调试支持。为了打印GYP中的变量值,我以前还专门写过一篇博文<>,在GN中,只需要一条print语句就可以解决。
2021-12-10 09:06:51
1018KB
构建
1