En nuestro intento por simplificar todavía mas los Makefiles, nos encontramos con que muchas veces existen archivos que llamándose igual, tienen diferentes extensiones. Una vez más make pone a nuestro servicio una herramienta para ahorrarnos trabajo.
Si tenemos una macro definida como:
SOURCES= main.c lib1.c lib2.cLa utilización de
$(SOURCES:.c=.o)en cualquier linea de comandos será equivalente a:
main.o lib1.o lib2.o
Si volvemos a escribir nuestro Makefile (pág. ) usando la sustitución de strings en macros nos quedará de la siguiente manera:
#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) $OBJS : $($@:.o=.c) $(CC) -c $?