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 .