La última versión de nuestro Makefile (pág. ) es muy escueta, pero todavía se puede reducir más.
Los ficheros fuente en C, siempre tiene el sufijo .c. Teniendo esto en cuenta, si en un momento dado make se encuentra con que tiene que generar un fichero objeto y en el directorio actual existe un fichero fuente de C de ese mismo nombre, make usará el compilador de C automáticamente para generar el fichero objeto buscado.
Esto nos permite ahorrarnos todas las entradas dedicadas a generar código objeto a partir de código fuente de C.
De esta manera la última versión de nuestro Makefile (pág. ) para la práctica quedará reducida a:
#Makefile de mi práctica, situado en el mismo directorio que #el resto de archivos de mi práctica LIBPATH =/home/alcortes/universidad/lao/practicas/bibliotecas/ LIBS = $(LIBPATH)mi_biblioteca1.o $(LIBPATH)mi_biblioteca2.o OBJS = $(LIBS) mi_programa.o mi_ejecutable: $(OBJS) $(CC) -o $@ $(OBJS)
Estas convenciones en los nombres de los archivos van a permitir a make realizar automáticamente una serie de tareas que de otra manera tendríamos que indicarle específicamente. Esto se consigue mediante una serie de reglas internas, que make añade a las que se le especifiquen en el Makefile y que están basadas en las terminaciones estándar de los ficheros. Es por eso que se llaman reglas sufijas
Conociendo las reglas sufijas por defecto y aprendiendo a construir nuevas reglas se puede reducir en gran medida la complejidad de los Makefiles.
Se pueden ver las reglas sufijas que tiene make definidas por defecto sin más que teclear3.3:
$ make -p -f/dev/null