Définition de règles de suffixe personnalisées dans Makefile

Makepeut créer automatiquement un fichier ao, en utilisant cc -c sur le fichier .c correspondant. Ces règles sont intégrées aumake, et vous pouvez profiter de cet avantage pour raccourcir votre Makefile. Si vous indiquez uniquement les fichiers .h dans la ligne de dépendance du Makefile dont dépend la cible actuelle,makesaura que le fichier .c correspondant est déjà requis. Vous n'êtes pas obligé d'inclure la commande du compilateur.

Cela réduit davantage le Makefile, comme indiqué ci-dessous -

OBJECTS = main.o hello.o factorial.o
hello: $(OBJECTS)
   cc $(OBJECTS) -o hello
hellp.o: functions.h

main.o: functions.h 
factorial.o: functions.h

Makeutilise une cible spéciale, nommée .SUFFIXES pour vous permettre de définir vos propres suffixes. Par exemple, reportez-vous à la ligne de dépendance donnée ci-dessous -

.SUFFIXES: .foo .bar

Il informe make que vous utiliserez ces suffixes spéciaux pour créer vos propres règles.

Similaire à comment makesait déjà créer un fichier .o à partir d'un fichier .c , vous pouvez définir des règles de la manière suivante -

.foo.bar:
   tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@
.c.o:
   $(CC) $(CFLAGS) -c $<

La première règle vous permet de créer un fichier .bar à partir d'un fichier .foo . Cela brouille essentiellement le fichier. La deuxième règle est la règle par défaut utilisée parmakepour créer un fichier .o à partir d'un fichier .c .