Ninja 是Google的一名程序员推出的注重速度的构建工具,一般在Unix/Linux上的程序通过make/makefile来构建编译,而Ninja通过将编译任务并行组织,大大提高了构建速度。
Ninja的目标是成为汇编程序。
构建系统在需要做出决策时变得缓慢。当您处于编辑 - 编译周期时,您希望它尽可能快 - 您希望构建系统执行必要的最少工作以确定需要立即构建的内容。
Ninja包含描述任意依赖图所需的最基本功能。它缺乏语法使得无法表达复杂的决策。
相反,Ninja旨在与生成其输入文件的单独程序一起使用。生成器程序(如 ./configure在autotools项目中找到的)可以分析系统依赖性并尽可能多地做出尽可能多的决策,以便增量构建保持快速。超越自动工具,甚至构建时决定,比如“我应该使用哪个编译器标志?” 或“我应该构建调试或发布模式二进制文件?” 属于 .ninja文件生成器。
./configure
.ninja
设计目标:
-M
一些明确的 非目标 :
重申一下,Ninja比其他构建系统更快,因为它非常简单。您必须告诉Ninja在创建项目 .ninja文件时要做什么。