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.c
La 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 $?