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)
|
Developer(s) | Evan Martin |
---|---|
Initial release | 2012[1] |
Stable release | 1.10.0[2]
/ January 28, 2020 |
Repository | |
Written in | C++, Python |
Operating system | Linux, macOS, Windows |
Type | Software development tools |
License | Apache License 2.0[3] |
Website | ninja-build |
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.[4] This can considerably slow down developers working on large projects, such as Google Chrome which compiles 40,000 input files into a single executable. In fact, Google Chrome is a main user and motivation for Ninja.[5] It's also used to build Android,[6] and is used by most developers working on LLVM.[7]
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. Gyp, CMake, Meson, and gn[8] are popular build management software tools which support creating build files for Ninja.[9]
Example
rule cc
command = gcc -c -o $out $in
description = CC $out
rule link
command = gcc -o $out $in
description = LINK $out
build source1.o: cc source1.c
build source2.o: cc source2.c
build myprogram: link source1.o source2.o
See also
References
- ^ Martin, Evan. "Google Groups: ninja-build". Retrieved 18 June 2017.
- ^ "Releases - ninja-build/ninja". Retrieved 26 May 2020.
- ^ "COPYING". Github. Retrieved 5 September 2019.
- ^ Röthlisberger, David. "The Ninja build tool". LWN. Retrieved 18 June 2017.
- ^ "Ninja". The Performance Of Open Source Applications. Retrieved 18 June 2017.
{{cite web}}
: Cite has empty unknown parameter:|1=
(help) - ^ "aosp mailing list".
- ^ "LLVM documentation".
- ^ "gn - Git at Google".
- ^ Kitware. "cmake Documentation". Retrieved 18 June 2017.