Makefile

Wikipediasta
Siirry navigaatioon Siirry hakuun

Makefile on tiedostomuoto, jota make ohjelma käyttää. Tiedosto sisältää ohjeet ohjelmointikielen kääntäjän ja sen apuohjelmien kuten linkkerin käyttöön, joilla lähdekoodista tuotetaan toimiva tietokoneohjelma tai kirjasto.

Makefile-tiedoston rakenteelle on POSIX-määrittely, mutta historiallisesti on ollut eri versioita sekä uudelleensuunniteltuja vaihtoehtoja samasta konseptista.[1]

Tiedoston rakenne[muokkaa | muokkaa wikitekstiä]

Tiedostossa kerrotaan kohde, joka halutaan tuottaa, sen vaatimat riippuvuudet ja tarvittavat komennot.

kohde: riippuvuudet
    komennot

Kohteina voi tyypillisesti olla all, joka suorittaa koko käännöksen, ja clean, joka siivoaa käännöksen aikana tuotetut väliaikaiset tiedostot kuten objektitiedostot poistamalla ne. Kohde voi riippua toisista kohteista, joilla on omat käännöskomennot.

Esimerkiksi A:n käännös voi riippua B:n ja C:n kääntämisestä, joista B voi riippua taas D:n ja E:n kääntämisestä:

 A: B C
   cmd_A

 B: D E
   cmd_B

Lisäksi tiedostossa voi olla muun muassa ympäristömuuttujien määrittelyjä toistuvien osien vähentämiseen. Esimerkiksi tyypillisesti käytettävän kääntäjän nimi asetetaan ympäristömuuttujaan CC, jotta sitä ei tarvitse toistaa tiedostossa.

Esimerkki[muokkaa | muokkaa wikitekstiä]

CC = cc
LD = ld

prog: foo.o bar.o
	$(LD) -o prog foo.o bar.o

foo.o: foo.c
	$(CC) -c foo.c

bar.o: bar.c
	$(CC) -c bar.c

Esimerkissä kääntäjäohjelma asetetaan muuttujaan CC, linkkeriohjelma muuttujaan LD, joita käytetään käännösvaiheissa. Ohjelman kääntämiseen käytettävä kohde prog riippuu kahdesta objektitiedostosta, joiden kääntämiseen kerrotaan ohjeet omina kohteinaan. Objektitiedostot linkitetään toisiinsa riippuvien kohteiden kääntämisen jälkeen.

Käännös esimerkkitapauksessa voidaan tehdä komentorivillä make prog, jonka jälkeen make-ohjelma kutsuu kerrottuja ohjelmia ehtojen mukaan.

Tyypillisesti useiden lähdekooditiedostojen kanssa objektitiedostot ja lähdekooditiedostot kerrotaan listana, jolloin jokaiselle ei tarvitse toistaa ehtomäärittelyä erikseen.

Lähteet[muokkaa | muokkaa wikitekstiä]

Viitteet[muokkaa | muokkaa wikitekstiä]

  1. make The Open Group. Viitattu 30.4.2019. (englanniksi)