next up previous contents index
Next: Reglas sufijas Up: Make Previous: Macros definidas internamente.   Índice General   Índice de Materias


Sustituciones de strings en macros

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 $?



Alberto Cortés 2001-03-26