¿Por qué se usan tanto `make clean` como` make mrproper`?

10

Está escrito en el kernel de Linux Makefileque

clean - Remove most generated files but keep the config and
        enough build support to build external modules
mrproper - Remove all generated files + config + various backup files

Y se afirma en los documentos del arco que

Para finalizar la preparación, asegúrese de que el árbol del núcleo esté absolutamente limpio;

$ make clean && make mrproper

Entonces, si se make mrproperelimina más a fondo, ¿por qué se make cleanusa?

sitilge
fuente

Respuestas:

18

La limpieza se realiza en tres niveles, como se describe en un comentario en el Makefile del kernel de Linux :

###
# Cleaning is done on three levels.
# make clean     Delete most generated files
#                Leave enough to build external modules
# make mrproper  Delete the current configuration, and all generated files
# make distclean Remove editor backup files, patch leftover files and the like

Según el Makefile, el mrproperobjetivo depende del cleanobjetivo (ver línea 1421 ). Además, el distcleanobjetivo depende de mrproper.

make mrproperPor lo tanto, la ejecución será suficiente, ya que también eliminaría las mismas cosas que lo cleanque haría el objetivo (y más).

El mrproperobjetivo se agregó en 1993 (Linux 0.97.7) y siempre ha dependido del cleanobjetivo. Esto significa que nunca fue necesario usar ambos objetivos como en make clean && make mrproper.

Referencia histórica: https://archive.org/details/git-history-of-linux

Kusalananda
fuente
@derobert wow, genial. Entonces make cleanes redundante, ¿verdad?
sitilge
2
@sitilge sí, es redundante, ya que make lo ejecutará de todos modos cuando lo ejecutes make mrproper.
derobert
0

cleanes un requisito previo para el mrproperdestino en Makefile , por lo que la ejecución por make cleanseparado es redundante.

sebasth
fuente