Ninja (build system)
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
1.9.0 / January 30, 2019
|Written in||C++, Python|
|Type||Software development tools|
|License||Apache License 2.0|
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.
In essence, Ninja is meant to replace Make, which is slow when performing incremental (or no-op) builds. This can considerably slow down developers working on large projects, such as Google Chrome which compiles 30,000 input files into a single executable. In fact, Google Chrome is a main user and motivation for Ninja. It's also used to build Android, and is used by most developers working on LLVM.
In contrast to Make, Ninja lacks features such as string manipulation, as Ninja build files are not meant to be written by hand. Instead, a "build generator" should be used to generate Ninja build files. CMake and Meson are popular build management software tools which support creating build files for Ninja.
- Martin, Evan. "Google Groups: ninja-build". Retrieved 18 June 2017.
- "Releases - ninja-build/ninja". Retrieved 16 Mar 2019.
- Röthlisberger, David. "The Ninja build tool". LWN. Retrieved 18 June 2017.
- "Ninja". The Performance Of Open Source Applications. Retrieved 18 June 2017.
- "aosp mailing list".
- "LLVM documentation".
- Kitware. "cmake Documentation". Retrieved 18 June 2017.
|This free and open-source software article is a stub. You can help Wikipedia by expanding it.|