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.