Ninja
| 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
[muokkaa]- 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
[muokkaa]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
[muokkaa]| 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) |
Käyttö (komentorivi)
[muokkaa]Ninja on suunniteltu käytettäväksi terminaalissa ja se on yleensä taustajärjestelmä (engl. backend) toiselle työkalulle, kuten CMake:lle tai Mesonille.
Sen tyypillinen käyttö komentorivillä on hyvin yksinkertainen:
- Rakentaminen: Suorittaa käännöksen nykyisestä hakemistosta lukien build.ninja-tiedostoa.
ninja
- Asennus: Kutsutaan usein suoraan korkeamman tason järjestelmien kautta tai erikoistyökaluilla.
ninja install # Voidaan käyttää, jos säännöt on määritelty
Ninja keskittyy minimiin, ja sen käyttöliittymä on optimoitu nopeaan toimintaan ja rakennusprosessin edistymisen näyttämiseen ilman ylimääräistä monimutkaisuutta.