试图根据一些研究形成我自己的答案。我认为严重程度的大致顺序是; mostlyclean、clean、maintainer-clean、mrproper、distclean,最后是clobber(结合了distclean和uninstall)。
清理
make clean 是最基本的级别。它会清理大多数生成的文件,但不会清理任何记录配置的文件。 GNU Make Manual's Goals page 状态:
删除所有通常通过运行 make 创建的文件。
此外,GNU Make Manual's Standard Targets page 阶段:
删除当前目录中通常通过构建程序创建的所有文件。如果其他目录中的文件是由此 makefile 创建的,则还要删除它们。但是,不要删除记录配置的文件。还保留可以通过构建生成的文件,但通常不是因为分发附带了它们。无需删除使用“mkdir -p”创建的父目录,因为它们本来可能已经存在。
如果 .dvi 文件不是分发的一部分,请在此处删除它们。
尽量干净
make mostlyclean 是我发现的唯一更温和的 clean 形式,它的行为类似于 clean,但留下的文件需要很长时间才能编译,并且通常不需要重新生成。
GNU Make Manual's Standard Targets page 阶段:
类似于“干净”,但可能会避免删除一些人们通常不想重新编译的文件。例如,GCC 的“mostlyclean”目标不会删除 libgcc.a,因为很少需要重新编译它并且需要很长时间。
使 distclean
make distclean 是许多 GNU Make 系统上基本make clean 的第一步。在许多但不是所有情况下,它似乎是假名或至少与make realclean 和make clobber 非常相似。它将删除make clean 所做的一切并删除配置。
在 Linux 系统中,这比make mrpropper 更进一步,详情请参阅下面的部分。
我不确定这个名字是否暗示事情已经变得足够干净以便分发(形成一个 tar 存档),或者该过程正在将它们返回到与分发的状态相同的状态(就像事情紧随其后一样解压 tar 档案)。
GNU Make Manual's Goals page 状态:
这些目标中的任何一个都可能被定义为删除比“干净”更多的文件。例如,这会删除您通常为准备编译而创建的配置文件或链接,即使 makefile 本身无法创建这些文件。
此外,GNU Make Manual's Standard Targets page 阶段:
删除当前目录(或由该makefile创建)中通过配置或构建程序创建的所有文件。如果您已经解压源代码并构建了程序而没有创建任何其他文件,“make distclean”应该只保留分发中的文件。但是,没有必要删除使用“mkdir -p”创建的父目录,因为它们本来可能已经存在。
进行卸载
make uninstall 将卸载通过make install 或install-* 变体之一安装的软件。这类似于某些系统上make clobber 的部分行为,但make uninstall 不应像make clobber 那样触及构建区域。
GNU Make Manual's Standard Targets page 阶段:
删除所有已安装的文件——“install”和“install-*”目标创建的副本。
这条规则不应该修改编译完成的目录,只修改安装文件的目录。
使维护者干净
make maintainer-clean 似乎比更常见的make distclean 退了一步。它会删除除配置之外的几乎所有内容。这使它与make clean 非常相似。
GNU Make Manual's Standard Targets page 阶段:
删除几乎所有可以用这个 Makefile 重建的东西。这通常包括 distclean 删除的所有内容,以及更多内容:Bison 生成的 C 源文件、标签表、Info 文件等等。
还强调这不是一个常用的目标,因为它适用于特定的一组用户:
“maintainer-clean”目标旨在供包的维护者使用,而不是由普通用户使用。
使先生正确
make mrproper 似乎是make distclean 或make clobber 的Linux 内核版本。
这停止了删除备份和补丁文件。它完成了make clean 目标所做的所有事情并去除了配置。
我相信这个名字来自一种清洁产品,在美国被称为Mr. Clean,在英国被称为 Flash(这就是为什么我没有听说过这个产品的名字)。芬兰裔美国人 Linus Torvalds 大概熟悉 Propper 先生的品牌名称。
Linux Kernel Makefile 声明:
# 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
制作破坏者
make clobber 在Wikipedia article for Clobbering 上也有提及。这也表明它比make clean 更严重,甚至可能会卸载软件。可能是make uninstall 和make distclean 的组合。
make clean 关卡没有单一来源。由于事情随着时间的推移而演变,术语和行为是不一致的。以上是迄今为止我设法拼凑的最好的。