Bruk av make
Bruk av make
På unix finnes et program som heter make. Dette programmet leser og tolker en såkalt make-fil, og utfører kommandoer som er gitt i denne.
Make benyttes typisk for å kompilere filer. Eksempel for java blir at man setter opp at målet er MyClass.class og at denne krever at MyClass.java kompileres.
En make-fil
En make-fil ser i sin enkleste form ut som under:
# Dette er et eksempel på en make-fil, og som du ser # kan hash-tegnet benyttes for å skrive kommentarer mål1: avhengighet 1 handling1 mål2: avhengighet 2 handling2
En make-fil er delt inn i tre deler: mål, uavhengighet og handling. En handling skal ha et innrykk på en TAB, vanlig mellomrom kan ikke brukes.
Målet sendes som argument til make. Når make får dette, sjekker den om avhengigheten til målet er et annet mål. I så fall kjøres det nye målet før den fortsetter med det opprinnelige.
Dersom alle avhengighetene er navn på filer, utføres handlingen dersom avhengighetene er nyere enn målet eller målet ikke finnes.
For et lite program dilldall bestående av de to filene dill.c og dall.c, kan make-filen Makefile se ut som følger:
# make-fil for programmet dilldall # dilldall: dill.o dall.o gcc -o dilldall dill.o dall.o dill.o: dill.c gcc -o dill.o -c dill.c dall.o: dall.c gcc -o dall.o -c dall.c
Når make dilldall kjøres vil make først sjekke målet dilldall. Den ser at dilldall avhenger av at dill.o og dall.o er tilstede. Videre ser den at dill.o og dall.o er egne mål i seg selv, og kjører derfor først disse målene, som er satt opp til å kompilere h.h.v. dill.c og dall.c til h.h.v. dill.o og dall.o. Når det er gjort, kjører den kommandoen for å sette dill.o og dall.o sammen til dilldall.
Noen konvensjoner
I make-filer er det ofte vanlig å ha mål som all og clean. All har som oppgave å gjøre alt i make-filen (utenom clean), mens clean typisk har som oppgave å fjerne alle resultater av å kjøre all. Eksempelvis kan make all kompilere all kode i et kodetre, mens make clean fjerner alle de kompilerte filene slik at bare kildekoden er igjen.
Variabler i make-filen
En make-fil kan inneholde variabler. En variable settes med:
VARIABEL = tilordnet_verdi
Et eksempel på en make-fil som bruker variabler:
CC = gcc CFLAGS = -O -Wall dill.o : dill.c $(CC) $(CFLAGS) -o dill.o -c dill.c
Innebygget intelligens
make har en viss intelligens når det kommer til c og c++-filer. Når det spesifiseres at målet er dill.o, skjønner make at det er dill.c som skal kompileres, uten at vi trenger å fortelle det i make-filen. Eksempel:
# Setter kompilator til å være gcc: CC = gcc # Parametre til kompilatoren: CFLAGS = -O -Wall dilldall: dill.o dall.o $(CC) -o dilldall dill.o dall.o
Kjøres nå kommandoen make dilldall, ser make at den trenger dill.o og dall.o for å lage dilldall og kompilerer opp disse fra dill.c og dall.c. Helt automagisk!
| Languages: | Comments: | 0 | Aid: | 79 | User rating: |
|
|
| Last updated: | 2003-09-15 | Author: | arnehall | Read: | 4574 times |