Definindo regras de sufixo personalizadas no Makefile

Makepode criar automaticamente um arquivo ao, usando cc -c no arquivo .c correspondente. Essas regras são integradas aomake, e você pode aproveitar essa vantagem para encurtar seu Makefile. Se você indicar apenas os arquivos .h na linha de dependência do Makefile do qual o destino atual depende,makesaberá que o arquivo .c correspondente já é necessário. Você não precisa incluir o comando para o compilador.

Isso reduz o Makefile ainda mais, como mostrado abaixo -

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

Makeusa um destino especial, denominado .SUFFIXES para permitir que você defina seus próprios sufixos. Por exemplo, consulte a linha de dependência fornecida abaixo -

.SUFFIXES: .foo .bar

Informa make que você usará esses sufixos especiais para fazer suas próprias regras.

Semelhante a como makejá sabe como fazer um arquivo .o a partir de um arquivo .c , você pode definir regras da seguinte maneira -

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

A primeira regra permite que você crie um arquivo .bar a partir de um arquivo .foo . Basicamente, ele embaralha o arquivo. A segunda regra é a regra padrão usada pormakepara criar um arquivo .o a partir de um arquivo .c .