Definieren benutzerdefinierter Suffixregeln in Makefile

Makekann automatisch eine ao-Datei erstellen, indem cc -c für die entsprechende .c-Datei verwendet wird. Diese Regeln sind in die integriertmakeund Sie können diesen Vorteil nutzen, um Ihr Makefile zu verkürzen. Wenn Sie nur die .h-Dateien in der Abhängigkeitszeile des Makefiles angeben, von dem das aktuelle Ziel abhängig ist,makewird wissen, dass die entsprechende .cfile bereits benötigt wird. Sie müssen den Befehl für den Compiler nicht einschließen.

Dies reduziert das Makefile weiter, wie unten gezeigt -

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

Makeverwendet ein spezielles Ziel namens .SUFFIXES , mit dem Sie Ihre eigenen Suffixe definieren können. Beziehen Sie sich beispielsweise auf die unten angegebene Abhängigkeitslinie -

.SUFFIXES: .foo .bar

Es informiert make dass Sie diese speziellen Suffixe verwenden, um Ihre eigenen Regeln zu erstellen.

Ähnlich wie makeSie wissen bereits, wie man eine .o- Datei aus einer .c- Datei erstellt. Sie können Regeln folgendermaßen definieren:

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

Mit der ersten Regel können Sie eine .bar- Datei aus einer .foo- Datei erstellen. Grundsätzlich wird die Datei verschlüsselt. Die zweite Regel ist die Standardregel, die von verwendet wirdmakeum eine .o- Datei aus einer .c- Datei zu erstellen .