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)