GNU-projektin Make on ohjelma, jonka avulla voi automatisoida esimerkiksi ohjelmien kääntämistä. Ohjelman tarkoitus on käyttää käännöstyökaluketjua niin, että turhaa työtä ei tehdä, mutta kaikki muutetut lähdekooditiedostot tulevat käännetyksi ja linkitetyksi. Sen sijaan muuttumattomat objektitiedostot voidaan linkittää mukaan sellaisenaan, kääntämättä niitä uudelleen.
Make sopii kuitenkin paljon muuhunkin kuin vain ohjelmoijan perustyökaluksi. Esimerkiksi Maken avulla HTML-koodiin voisi lisätä joka sivulla toistuvan otsikkoelementin automaattisesti. Toinen sovellus jonka kanssa Make toimii mukavasti yhteen on LaTeX-ladontajärjestelmä.
LaTeX on TeX-järjestelmän päälle rakennettu kokonaisuus, jonka avulla voi tuottaa erittäin kauniisti ladottuja kirjallisia dokumentteja. Erityisen hyvin LaTeX sopii matemaattisen aineiston esittämiseen. Omasta mielestäni parasta LaTeX-ohjelmassa on oikeasti toimiva tavutus ja hyvä tuki viitteiden käytölle.
LaTeX-järjestelmällä tuotetut tiedostot täytyy “kääntää” ennen kuin niitä pääsee katselemaan esimerkiksi PDF-muodossa. Dokumentin luominen voi tapahtua esimerkiksi näin:
- Käsketään bibtex ohjelmaa ottamaan viitteet mukaan. (bibtex teksti.tex)
- Ajetaan latex ohjelma kertaalleen. (latex teksti.tex)
- Ajetaan bibtex ja latex vielä kerran. (latex teksti.tex, bibtex teksti.tex)
- Ajetaan dvips-ohjelma, joka muuntaa latex:n tuottaman dvi-tiedoston ps-tiedostoksi. (dvips teksti.dvi)
- Ajetaan ps2pdf-ohjelma, joka muuntaa ps-tiedoston pdf-tiedostoksi.
Tässä kohtaa Make tulee mukaan kuvioihin. Koska vaiheita on noin paljon ja LaTeX-ohjelma saattaa käyttää useita lähdetiedostoja, Maken avulla toimintaa voi mukavasti yksinkertaistaa. Komentamalla Makea tuottamaan vaikkapa suoraan PDF-tiedosto (yhdellä komennolla), säästetään aikaa ja vaivaa.
Makefile-nimistä tiedostoa käytetään ohjaamaan Maken toimintaa. Tässä linkki Make-ohjelman kanssa käyttämääni Makefile-tiedostoon, joka tällä kertaa ohjaa LaTeXia toimimaan oikein. Täältä löydät lisää Makefile-tiedostoja juuri LaTeX:n kanssa käytettäväksi.