Make
program:
Feladata a program aktuális verziójának az elkészítése.
make [ -i ] [ -n ] [
-s ] [ -f MakeFile
... ] [ TargetFile ...]
opciók (nem mind):
-i hiba
esetén is folytatja az futást
-n kiírja a
parancsokat, de nem hajtja végre
-s nem ír ki
semmit, de végrehajtja a parancsokat
-f make file neve
File formátum:
Default file név Makefile
függőségi
viszony explicit leírása :
target [target] : [File] . .
[prefix] parancs
Pl.:
book.txt
: chap1.t chap2.t \
chap3.t
copy chap1.t+chap2.t+chap3.t
book.txt
type book.txt
függőségi viszony implicit leírása :
.forrásfile_kiterjesztése .targetfile_kiterjesztése:
[prefix] parancs
Pl.:
.c.obj:
cc -c $<
prefix:
- Hiba
mellőzése
-num Hiba esetén a visszatérési értéke
@ Kiíratás
letiltása
$* Teljes forrásfile
neve kiterjesztés nélkül
$< out-of-date forrásfile teljes
neve (kiterjesztéssel)
$. forrásfile
teljes neve path nélkül
$&. forrásfile
neve path nélkül (kiterjesztés nélkül)
$: csak a path
$@ Teljes aktuális target
név
# megjegyzés
Makró :
definíció
makro_neve = érték
használata:
$(makro_neve)
Példa teljes makefile-ra :
Forrásfájlok: f1.h, f1.c, f2.h, f2.c,
prg1.c
Az f1.h és f2.h a megfelelő .c
fájlban definiált függvények prototípusait, illetve globális típusdefinícióit
és esetleges változóit tartalmazza extern tárolási osztállyal.
A main függvény a prg1.c fájlban van, a futtatható program prg1.exe néven
keletkezik.
Értelemszerűen a f1.c fájl elején van egy #include "f1.h" sor, az
f2.c-ben hasonlóan f2.h, a prg1.c fájlban pedig
mindkettő.
(Unix környezetben nem szokás a futtatható programot prg1.exe néven nevezni, csupán prg1 néven)
#Forditoprogram
es linker hivasa #Microsoft Visual
Studio command line CC=cl #Borland C #CC=bcc #Gnu C
(Unix) #CC=gcc #a keletkezett targykod
kiterjesztese OBJ=obj #Unix #OBJ=o #a keletkezett futtathato
kod kiterjesztese EXE=.exe #Unix #EXE= #csak forditasra
hasznalt kapcsolo CFLAGS= -c #csak linkelesre
hasznalt kapcsolo LFLAGS= #Unix #LFLAGS= -lm #az elso target, azaz ha csak kiadjuk a "make"
parancsot, #es ez a file "makefile" nevu, akkor ez ervenyesul all : prg1$(EXE) f1.$(OBJ): f1.c
f1.h $(CC) $(CFLAGS) f1.c f2.$(OBJ): f2.c
f2.h $(CC) $(CFLAGS) f2.c prg1.$(OBJ): prg1.c
f1.h f2.h $(CC) $(CFLAGS) prg1.c prg1$(EXE): f1.$(OBJ) f2.$(OBJ)
prg1.$(OBJ) $(CC) $(LFLAGS) prg1.$(OBJ) f1.$(OBJ)
f2.$(OBJ) #komplett ujraforditashoz
celszeru hasznalni: make clean clean : $(DEL) *.$(OBJ) $(DEL) prg1$(EXE) |