Definición de reglas de sufijo personalizado en Makefile

Makepuede crear automáticamente un archivo ao, usando cc -c en el archivo .c correspondiente. Estas reglas están integradasmake, y puede aprovechar esta ventaja para acortar su Makefile. Si indica solo los archivos .h en la línea de dependencia del Makefile del que depende el destino actual,makesabrá que el archivo .c correspondiente ya es necesario. No es necesario que incluya el comando para el compilador.

Esto reduce aún más el Makefile, como se muestra a continuación:

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

Makeutiliza un objetivo especial, llamado .SUFFIXES para permitirle definir sus propios sufijos. Por ejemplo, consulte la línea de dependencia que se muestra a continuación:

.SUFFIXES: .foo .bar

Informa make que utilizará estos sufijos especiales para crear sus propias reglas.

Similar a como makeya sabe cómo hacer un archivo .o a partir de un archivo .c , puede definir reglas de la siguiente manera:

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

La primera regla le permite crear un archivo .bar a partir de un archivo .foo . Básicamente, codifica el archivo. La segunda regla es la regla predeterminada utilizada pormakepara crear un archivo .o a partir de un archivo .c .