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