tutorial make makefile gnu-make

tutorial - makefile ubuntu



Haciendo que todas las reglas dependan del propio Makefile (2)

Cuando cambio un Makefile, sus reglas pueden haber cambiado, por lo que deberían ser reevaluadas, pero parece que make no lo parece.

¿Hay alguna manera de decir, en un Makefile, que todos sus objetivos, sin importar cuál, dependan del Makefile en sí? (Independientemente de su nombre.)

Estoy usando GNU make.


Esto parece una cosa más simple, útil y lógica que Make debería poder hacer, pero no lo es.

Aquí hay una solución. Si la regla de clean está configurada correctamente, Make puede ejecutarla cada vez que se modifique el makefile, utilizando un archivo dummy vacío como marcador.

-include dummy dummy: Makefile @touch $@ @$(MAKE) -s clean

Esto funcionará para la mayoría de los destinos, es decir, los objetivos que son archivos reales y que se eliminan con la limpieza, y cualquier objetivo que dependa de ellos. Los objetivos de efectos secundarios y algunos objetivos de PHONY se deslizarán a través de la red.


La única respuesta que conozco a esto es agregar makefile explícitamente a las dependencias. Por ejemplo, %.o: %.c makefile $(CC) $(CFLAGS) -c $<