Voici un exemple simple utilisant la règle des modèles :
# Exemple d'utilisation de regles implicites : les regles de modele # Ces regles sont plus souples que les regles de suffixe # '%' signifie "n'importe quelle chaine" # '%.o : %.c' signifie : prendre un fichier se terminant par .c pour construire un fichier se terminant par .o # $@ represente le fichier de sortie # $< represente le fichier d'entree # Syntaxe pour lancer ce makefile : make aire.o # On peut passer des arguments : make CFLAGS="-O -g" aire.o OBJS = cercle.o aire.o aire : $(OBJS) $(CC) -o $@ $(OBJS) %.o : %.c $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
Et voici un exemple un peu plus compliqué (ce makefile permet de compiler deux versions du programme aire
au choix : aire
, le programme normal, et aire_dbg
avec l'option -g pour déboguage) :
# Exemple d'utilisation de regles implicites : les regles de modele # Ces regles sont plus souples que les regles de suffixe # '%' signifie "n'importe quelle chaine" # '%.o : %.c' signifie : prendre un fichier se terminant par .c pour construire un fichier se terminant par .o # $@ represente le fichier de sortie # $< represente le fichier d'entree # Syntaxe pour lancer ce makefile : make aire.o # On peut passer des arguments : make CFLAGS="-O -g" aire.o OBJS = cercle.o aire.o DEBUG_OBJS = cercle_dbg.o aire_dbg.o aire : $(OBJS) $(CC) -o $@ $(OBJS) aire_dbg : $(DEBUG_OBJS) $(CC) -o $@ $(DEBUG_OBJS) %.o : %.c $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< %_dbg.o : %.c $(CC) -c -g -O -o $@ $< clean : rm -f `find . -name '*.o' -print`