Ninja (byggsystem)

Ninja
Utvecklare Evan Martin
Initial release 2012 ; 11 år sedan ( 2012 )
Stabil frisättning
1.11.0 / 15 maj 2022 ; 9 månader sedan ( 15-05-2022 )
Förvar
Skrivet i C++ , Python
Operativ system Linux , macOS , Windows
Typ Verktyg för mjukvaruutveckling
Licens Apache-licens 2.0
Hemsida ninja-build .org  Edit this on Wikidata

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 

externa länkar