Jump to content

Ninja (build system)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by PrinceKael (talk | contribs) at 17:40, 5 September 2019 (added source for license, updated OS.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Ninja
Developer(s)Evan Martin
Initial release2012; 12 years ago (2012)[1]
Stable release
1.9.0[2] / January 30, 2019; 5 years ago (2019-01-30)
Repository
Written inC++, Python
Operating systemLinux, macOS, Windows
TypeSoftware development tools
LicenseApache License 2.0[3]
Websiteninja-build.org Edit this on Wikidata

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. CMake and Meson are popular build management software tools which support creating build files for Ninja.[8]

See also

References

  1. ^ Martin, Evan. "Google Groups: ninja-build". Retrieved 18 June 2017.
  2. ^ "Releases - ninja-build/ninja". Retrieved 16 Mar 2019.
  3. ^ "COPYING". Github. Retrieved 5 September 2019.
  4. ^ Röthlisberger, David. "The Ninja build tool". LWN. Retrieved 18 June 2017.
  5. ^ "Ninja". The Performance Of Open Source Applications. Retrieved 18 June 2017. {{cite web}}: Cite has empty unknown parameter: |1= (help)
  6. ^ "aosp mailing list".
  7. ^ "LLVM documentation".
  8. ^ Kitware. "cmake Documentation". Retrieved 18 June 2017.

External links