Почему используются `make clean` и` make mrproper`?

10

В ядре Linux написано, Makefileчто

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

И на архивных документах указано, что

Чтобы завершить подготовку, убедитесь, что дерево ядра абсолютно чистое;

$ make clean && make mrproper

Так что, если make mrproperболее тщательное удаление, почему make cleanиспользуется?

sitilge
источник

Ответы:

18

Очистка выполняется на трех уровнях, как описано в комментарии к Makefile ядра 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

Согласно Makefile, mrproperцель зависит от cleanцели (см. Строку 1421 ). Кроме того, distcleanцель зависит от mrproper.

Выполнение make mrproperпоэтому будет достаточно , так как это было бы также удалить те же вещи, что cleanцель будет делать (и более).

mrproperЦель была добавлена в 1993 году (Linux 0.97.7) и всегда зависит от cleanцели. Это означает, что никогда не было необходимости использовать обе цели, как в make clean && make mrproper.

Историческая справка: https://archive.org/details/git-history-of-linux

Кусалананда
источник
@ derobert Вау, отлично. Так make cleanизбыточно, верно?
sitilge
2
@sitilge да, это избыточно, так как make запустит его в любом случае, когда вы запустите make mrproper.
Дероберт
0

cleanявляется обязательным условием для mrproperцели в Makefile , поэтому выполнение по make cleanотдельности является излишним.

sebasth
источник