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 .