El programa make define por cuenta propia una serie de macros de uso común. Esto puede ser muy útil a la hora de reducir el tamaño de nuestros Makefiles, aunque quizás, para el usuario novel hace el código algo difícil de entender.
Aquí se presentan las macros internas más importantes3.2
$@
:Tiene el valor del objetivo actual, sólo se puede usar en
lineas de comandos.
$?
:Tiene el valor de la lista de prerrequisitos que son más nuevos
que el objetivo, sólo se puede utilizar en las lineas de comandos.
$$@
:Tiene el valor del objetivo actual, sólo se puede usar en los
prerrequisitos.
$CC
:Compilador de C por defecto
$CFLAGS
:Opciones para CC
Podemos ahora reescribir nuestro Makefile (pág. ) 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 mi_programa.o: mi_programa.c $CC -c $? mi_biblioteca1.o: mi_biblioteca1.c $CC -c $? mi_biblioteca2.o: mi_biblioteca2.c $CC -c $?
En el caso de que queramos construir muchos ejecutables, de forma que cada uno de ellos depende únicamente de un solo fichero fuente, este sencillo makefile nos soluciona le problema:
EJEC = eje1 eje2 eje3 eje3 eje4 eje5 $(EJEC) : $$@.c $(CC) -O $? -o $@
De forma que ejecutando
$ make eje3 eje5
Compilaremos los fuentes eje3.c y eje5.c.