Jam
| Perforce Jam | |
|---|---|
| Tekijä(t) | Christopher Seiwald |
| Kehittäjä(t) | Perforce Software (Alkuperäinen), myöhemmin avoimen lähdekoodin kehittäjät (esim. FT-Jam, Boost.Build) |
| Ensijulkaisu | 1990-luvun alku |
| Vakaa versio | 2.5 (Viimeinen virallinen Perforce-julkaisu) / 2014 |
| Kehitysversio | Aktiivinen kehitys jatkuu forkeissa (esim. Boost.Build, FT-Jam) |
| Ohjelmoitu | C |
| Käyttöliittymä | Komentorivi (CLI) |
| Tyyppi | Rakennusautomaatiotyökalu |
| Lisenssi | BSD-lisenssi |
| Kotisivu | perforce.com/jam/jam.html |
| Lähdekoodi | github.com/FT-Jam/ft-jam |
Perforce Jam on alun perin Perforce Softwaren kehittämä alustariippumaton rakennusautomaatiotyökalu (build tool). Se suunniteltiin korvaamaan perinteinen make-työkalu tarjoamalla sisäänrakennetun tuen eri käyttöjärjestelmille ja välttämällä erillisten konfiguraatiotyökalujen (kuten Autotoolsin) tarpeen.
Jam käyttää riippuvuuksien määrittelyyn omia Jamfiles-tiedostoja, jotka hyödyntävät yksinkertaista makrokieltä rakennuslogiikan kuvaamiseen.
Kehityksen tila
[muokkaa]Alkuperäinen Perforce Jam -projekti on pitkälti pysähtynyt. Suurin osa aktiivisesta kehityksestä ja käytöstä tapahtuu nykyään sen avoimen lähdekoodin johdannaisissa (forkeissa), joista merkittävimmät ovat:
- Boost.Build (BJam): Laajalti käytetty C++-kirjasto Boostin rakennusjärjestelmänä.
- FT-Jam: Ylläpidetty versio, jota käytetään muun muassa FreeType-projektissa.
Käyttö
[muokkaa]Jam-työkalun käyttö keskittyy riippuvuuksien määrittelyyn ja suorittamiseen tehokkaasti. Toisin kuin make, joka usein nojautuu ulkoisiin skripteihin alustan konfiguroimiseksi, Jam pyrkii hoitamaan siirrettävyyden sisäisesti
Jamfiles
[muokkaa]Projektin rakennussäännöt määritellään Jamfiles-tiedostoihin (vastaa Makefiliä). Jamfiles-kieli on suunniteltu erityisesti rakennusprosessin kuvaamiseen, eikä se ole yleiskäyttöinen ohjelmointikieli.
Rakenne
[muokkaa]Jam-pohjaisessa rakennusprosessissa komento suoritetaan yleensä muodossa:
jam [targets] [options]
Esimerkiksi kääntäminen onnistuu usein vain ajamalla jam projektin juurihakemistossa, jolloin se lukee Jamfile:n ja kääntää oletuskohteet.