Por que tanto `make clean` e` make mrproper` são usados?

10

Está escrito no kernel do 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

E é afirmado nos documentos do arco que

Para finalizar a preparação, verifique se a árvore do kernel está absolutamente limpa;

$ make clean && make mrproper

Então, se make mrproperuma remoção mais completa é removida, por que é make cleanusada?

sitilge
fonte

Respostas:

18

A limpeza é feita em três níveis, conforme descrito em um comentário no Makefile do kernel do 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

De acordo com o Makefile, o mrproperalvo depende do cleanalvo (veja a linha 1421 ). Além disso, o distcleandestino depende mrproper.

A execução make mrproperserá, portanto, suficiente, pois também removeria as mesmas coisas que o cleanalvo faria (e mais).

O mrproperdestino foi adicionado em 1993 (Linux 0.97.7) e sempre dependeu do cleandestino. Isso significa que nunca foi necessário usar os dois destinos como em make clean && make mrproper.

Referência histórica: https://archive.org/details/git-history-of-linux

Kusalananda
fonte
@derobert uau, ótimo. Então make cleané redundante, certo?
sitilge
2
@ sitilge sim, é redundante, pois o make o executará assim mesmo quando você executar make mrproper.
derobert
0

cleané um pré-requisito para o mrproperdestino no Makefile , portanto, executar make cleanseparadamente é redundante.

sebasth
fonte