Ninja on käännösautomaatiojärjestelmä tietokoneohjelman kääntämiseen lähdekoodista. Ohjelma on julkaistu Apache 2.0 -lisenssillä.
Ninja ei toteuta eräitä toiminta, vaan luottaa toisen käännöstyökalun kuten CMake tai Meson tuottamiin tiedostoihin: Ninjan konfiguraatiotiedostoja ei ole tarkoitus tehdä käsin. Ohjelma on toteutettu C++-kielellä.
Evan Martin toteutti Ninjan johtuen make-ohjelman ongelmista kuten sen hitaudesta. Martin aloitti Ninjan vuonna 2010 työskennellessään Chrome-projektissa. Chromen käännös ottaa noin C++-lähdekooditiedostoa ja tuottaa noin 90 megatavun ohjelmatiedoston. Ero make-ohjelmaan suorituskyvyssä ilmenee suurissa projekteissa. Ninja suorittaa useita käännöstoimintoja rinnakkain oletuksena.
Työkalua käyttävät Google Chrome, osat Android-käyttöjärjestelmästä sekä LLVM-projekti.https://ninja-build.org
Esimerkki Esimerkki ohjelman konfiguraatiotiedostosta: 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
Lähteet
Aiheesta muualla The Ninja build system
Luokka:Käännöstyökalut