Ninja is a small build system with a focus on speed. It differs from other build systems in two major respects: it is designed to have its input files generated by a higher-level build system, and it is designed to run builds as fast as possible.
Why yet another build system?
Where other build systems are high-level languages Ninja aims to be an assembler.
Ninja build files are human-readable but not especially convenient to write by hand. (See the generated build file used to build Ninja itself.) These constrained build files allow Ninja to evaluate incremental builds quickly. For the Chrome browser on Linux (the motivating project behind Ninja), Ninja is under a second for a no-op build where the equivalent Makefiles took over ten seconds.
See the extensive manual for more: philosophical background, whether and how you can use Ninja for your project, platform support, and details about the language semantics.
The last Ninja release is v1.4.0, released 12 September 2013. Read the release notes.
$ git clone git://github.com/martine/ninja.git && cd ninja $ git checkout release $ cat README
Or install from automated systems (warning: frequently out of date):
- See AUR.
- $ apt-get install ninja-build
- $ emerge dev-util/ninja
- $ port install ninja
- $ brew install ninja