Ninja (byggsystem)
Utvecklare | Evan Martin |
---|---|
Initial release | 2012 |
Stabil frisättning | 1.11.0 / 15 maj 2022
|
Förvar | |
Skrivet i | C++ , Python |
Operativ system | Linux , macOS , Windows |
Typ | Verktyg för mjukvaruutveckling |
Licens | Apache-licens 2.0 |
Hemsida |
|
Ninja är ett litet byggsystem utvecklat av Evan Martin, en Google -anställd. Ninja har fokus på hastighet och det skiljer sig från andra byggsystem i två viktiga avseenden: det är designat för att få sina indatafiler genererade av ett byggsystem på högre nivå, och det är designat för att köra byggen så snabbt som möjligt.
Bygg system
I huvudsak är Ninja tänkt att ersätta Make , som är långsam när man utför inkrementella (eller no-op) builds. Detta kan avsevärt bromsa utvecklare som arbetar med stora projekt, som Google Chrome som kompilerar 40 000 indatafiler till en enda körbar fil. Faktum är att Google Chrome är en huvudanvändare och motivation för Ninja. Det används också för att bygga Android (via Makefile-översättning av Kati ), och används av de flesta utvecklare som arbetar med LLVM .
I motsats till Make saknar Ninja funktioner som strängmanipulation, eftersom Ninja-byggfiler inte är avsedda att skrivas för hand. Istället bör en "bygggenerator" användas för att generera Ninja-byggfiler. Gyp , CMake , Meson och gn är populära verktyg för bygghantering som stöder att skapa byggfiler för Ninja.
Exempel
regel cc kommando = gcc -c -o $ out $in beskrivning = CC $out regellänkkommando = gcc -o $out $in beskrivning = LÄNK $out build source1.o : cc source 1. c build source2.o : cc källa 2. c bygga mitt program : länk källa 1. o källa 2. o