Definizione delle regole del suffisso personalizzato nel Makefile
Makepuò creare automaticamente un file ao, utilizzando cc -c sul file .c corrispondente. Queste regole sono integrate inmakee puoi sfruttare questo vantaggio per accorciare il tuo Makefile. Se indichi solo i file .h nella riga di dipendenza del Makefile da cui dipende il target corrente,makesaprà che il file .c corrispondente è già richiesto. Non è necessario includere il comando per il compilatore.
Questo riduce ulteriormente il Makefile, come mostrato di seguito -
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
Makeutilizza un obiettivo speciale, denominato .SUFFIXES per consentire di definire i propri suffissi. Ad esempio, fare riferimento alla riga di dipendenza fornita di seguito:
.SUFFIXES: .foo .bar
Informa make che utilizzerai questi suffissi speciali per creare le tue regole.
Simile a come makesa già come creare un file .o da un file .c , puoi definire le regole nel modo seguente:
.foo.bar:
tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > [email protected]
.c.o:
$(CC) $(CFLAGS) -c $<
La prima regola ti consente di creare un file .bar da un file .foo . Fondamentalmente codifica il file. La seconda regola è la regola predefinita utilizzata damakeper creare un file .o da un file .c .