谁能告诉我“make clean”和“make clobber”之间的区别?我搜索过但没有找到有用的答案。
这两个术语都没有明确的含义。 Makefile 作者创建目标并为它们提供人类可读的名称; 传统上,
clean
表示从以前的构建中删除内容,而clobber
表示强行覆盖以前的一些结果。后者不太常见或没有必要。
在每种情况下,对于每个 Makefile,您应该阅读任何随附的构建文档,或检查
Makefile
并了解它的作用,或者,也许作为最后的手段,询问作者。
在 CPython 项目中,
make clean
删除中间结果,如 .o
文件,make clobber
还删除最终结果,如 python
(或 Mac 上的 python.exe
)可执行文件本身,而 make distclean
尝试删除甚至Makefile
(和其他构建基础设施)本身。后者之后,您需要重新运行./configure
。
make clean
的目的是简单地强制重新编译。 make clobber
的目的还在于清理(占用空间的)构建产品。 make distclean
的目的是生成一个可以打包以便分发的源代码树。
在实践中,每一个都有些缺陷,如果您真正想要删除所有构建工件,那么您可能最好使用干净的 git 克隆。
Python自己的文档似乎不再推荐
make clobber
,只描述了make clean
和make distclean
。