Ninja (käännösjärjestelmä)

Ninja
Luoja Evan Martin
Kehityshistoria
Vakaa versio 1.12.1 ()[1]
Tiedot
Ohjelmointikielet C++
Lisenssi Apache-lisenssi, versio 2.0
Aiheesta muualla
Verkkosivusto
Versiohallinta

Ninja on käännösautomaatiojärjestelmä tietokoneohjelman kääntämiseen lähdekoodista.[2] Ohjelma on julkaistu Apache 2.0 -lisenssillä.[3]

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.[4] Ohjelma on toteutettu C++-kielellä.[4]

Evan Martin toteutti Ninjan johtuen make-ohjelman ongelmista kuten sen hitaudesta.[5][6] Martin aloitti Ninjan vuonna 2010 työskennellessään Chrome-projektissa.[2] Chromen käännös ottaa noin 40 000 C++-lähdekooditiedostoa ja tuottaa noin 90 megatavun ohjelmatiedoston.[2] Ero make-ohjelmaan suorituskyvyssä ilmenee suurissa projekteissa.[7] Ninja suorittaa useita käännöstoimintoja rinnakkain oletuksena.[7]

Työkalua käyttävät Google Chrome, osat Android-käyttöjärjestelmästä sekä LLVM-projekti.[8]

Esimerkki

Esimerkki ohjelman konfiguraatiotiedostosta:[4]

    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

  1. Release 1.12.1, (viitattu ). Tieto on haettu Wikidatasta.
  2. a b c Evan Martin: Ninja aosabook.org. Viitattu 1.2.2020. (englanniksi) 
  3. COPYING github.com. Viitattu 1.2.2020. (englanniksi)
  4. a b c David Röthlisberger: The Ninja build tool lwn.net. 16.11.2016. Viitattu 1.2.2020. (englanniksi)
  5. Meson Frequently Asked Questions mesonbuild.com. Viitattu 1.2.2020. (englanniksi) 
  6. Ninja, a new build system neugierig.org. 6.2.2011. Viitattu 1.2.2020. (englanniksi)
  7. a b David Paul Röthlisberger: Benchmarking the Ninja build system david.rothlis.net. 4.11.2016. Viitattu 1.2.2020. (englanniksi)
  8. https://ninja-build.org

Aiheesta muualla