Aunque make ya tiene definidas por defecto una enorme cantidad de reglas sufijas, siempre puede ser de utilidad el crear nuestras propias reglas.
Supongamos que por alguna razón tenemos determinado código en C en unos archivos que no acaban en .c sino en .G (por ejemplo). Si no quisiéramos usar reglas sufijas tendríamos dos alternativas, o cambiamos los sufijos de todos los ficheros o creamos una entrada en el Makefile para compilar estos ficheros.
Las lineas que habría que incluir en el Makefile para olvidarnos del problema serían:
.SUFFIXES: .G .G.o: $CC $CFLAGS -c $<
Como vemos, mantiene gran similitud con la definición de una regla normal. Siguiendo con la comparación, en la linea segunda .o sería el sufijo a ponerle al objetivo, .G sería el sufijo del prerrequisito y en la linea tres tendríamos la linea de comandos necesaria.
Las reglas sufijas pueden hacer uso de una nueva macro interna, $<
, que
es el equivalente a $?
en las reglas normales, es decir toma el valor del
prerrequisito que activo la regla sufija.
Otra nueva macro interna de la que podemos hacer uso al describir reglas
sufijas es $*
, que toma el valor de $<
pero sin el sufijo.