Ninja

Linux.fista
Versio hetkellä 13. marraskuuta 2025 kello 21.35 – tehnyt Lahtis (keskustelu | muokkaukset) (Ninja)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun
Ninja
Käyttöliittymä komentorivi
Lisenssi Apache-lisenssi 2.0
Kotisivu ninja-build.org
Lähdekoodi /github.com/ninja-build/ninja

Ninja on rakennusjärjestelmä (engl. build system), mutta se eroaa perinteisistä työkaluista kuten Make:sta.

Ninja on erityisesti suunniteltu olemaan erittäin nopea ja keskittymään vain komentojen suorittamiseen (rakennusvaiheeseen), ei niiden luomiseen (konfigurointivaiheeseen).

Tässä on tiivistelmä Ninjan roolista Linux-ohjelmistojen kääntämisessä:

1. Rooli ja tarkoitus

  • Päätehtävä: Ninjan päätehtävä on ajaa mahdollisimman tehokkaasti ja rinnakkain ne komennot, jotka tarvitaan lähdekoodin muuttamiseksi valmiiksi ohjelmaksi.
  • Nopeus: Se on minimalistinen, ja sen toteutus on optimoitu nopeaan suoritukseen. Tämä tekee siitä ihanteellisen suurten projektien toistuvaan kääntämiseen kehitystyön aikana.
  • Työskentelytapa: Ninja ei luo itse komentoja. Sen sijaan toinen, korkeamman tason työkalu luo sille syöttötiedostot (eli build.ninja-tiedoston), jotka kertovat Ninjalle täsmällisesti, mitä komentoja ja missä järjestyksessä tulee ajaa.

2. Käyttö modernien järjestelmien kanssa

Ninjaa käytetään useimmiten yhdessä konfigurointityökalujen kanssa, jotka hoitavat monimutkaisen logiikan:

Konfigurointijärjestelmä Ninjan rooli
Meson Meson luo oletusarvoisesti build.ninja-tiedostot. Meson on siis konfigurointijärjestelmä ja Ninja on rakennusjärjestelmä.
CMake CMake on konfigurointijärjestelmä, mutta se voi generoida tulosteen perinteisen Makefilen sijaan Ninja-tiedostoiksi, jotta käännös olisi nopeampi.

3. Ero Makeen verrattuna

Ominaisuus Make (Perinteinen) Ninja (Moderni)
Tarkoitus Sekä komentosarjojen luominen että suorittaminen (Historiallisesti) Vain komentojen nopea suorittaminen
Tiedostot Lukee Makefile-tiedostoja Lukee build.ninja-tiedostoja
Käyttö Soveltuu sekä yksinkertaisiin että monimutkaisiin projekteihin Käytetään useimmiten generoitujen tiedostojen suorittamiseen (ei käsinkirjoitettujen)

Katso myös