Précédent Index Suivant

8.4  make

  Format d'une règle


target: dependencies
        commands... 
Quoi
target

Objectif

Généralement un fichier
Pourquoi
dependencies

Liste des fichiers/cibles dont dépend target
Comment
commands

Précédées d'une tabulation \t

  Exemple de Makefile

#
# makefile pour un programme C
#

executable: f1.o f2.o
        cc -o executable f1.o f2.o
        
f1.o: f1.c fichier.h
        cc -c f1.c

f2.o: f2.c fichier.h
        cc -c f2.c

clean:
        rm -f *~ *.o executable

# et voila !
    

  Algorithme de make

  Commodités

  Macros dans un makefile

Facilitent la portabilité

  Macros prédéfinies

  Macros spéciales

  Cibles spéciales

.PHONY : clean 
clean:
        rm -f *~ *.o executable

  Règles implicites

  Exemple makefile

#
# un makefile plus joli, plus propre, ...

all: executable

OBJECTS = f1.o f2.o 

.SUFFIXES: .c .o

.c.o: fichier.h
        $(CC) $(CFLAGS) $<

executable: $(OBJECTS)
        $(CC) $(CFLAGS) -o executable \
                        $(OBJECTS)
.PHONY: clean 
clean:
        $(RM) $(OBJECTS) executable *~

# et voila !
    

  Remarques

  Exemple makefile et sh

# un makefile avec du shell

all: executable

SOURCES = *.c
.SILENT:

lignes:
        echo "nombre de lignes"
        for file in $(SOURCES) ; \
        do \
         echo "$$file = `wc -l $$file `";\
        done

informations:
        $(MAKE) lignes
        ...

# et voila !
    

Précédent Index Suivant