应该`make clean`移除子模块和第三方软件包?
问题描述:
我是Makefiles的新手。我不确定make clean
的标准语义。以下哪项是正确的?应该`make clean`移除子模块和第三方软件包?
-
make clean
应该删除从库中的其他文件分别建的所有文件。例如:clean: @rm -rf dist
-
make clean
应删除其他文件分别建在仓库中的所有文件,或通过make setup
加入。例如:clean: @rm -rf dist @rm -rf node_modules # remove npm packages installed by `setup`
建设一个文件从另一个一般不需要互联网连接,但获取第三方依赖经常做。这表明make clean
不应删除由make setup
安装的第三方依赖项。但是,如果有人正在修改第三方依赖关系的来源,那么可能吹掉这些更改正是make clean
所要做的。
换言之,应该make clean
“撤消”make
,还是应该撤消make setup && make
?
答
总的来说,这取决于您的make clean
。你引用的规则只是惯例。
不过,也有基本上的原因调用make clean
:
- 免费尽可能的磁盘空间,一切都做了。
- 如果发生某些事情(例如时间戳)并且增量构建不再有效,请允许重新开始。
关于第一种情况,根据“一切都已完成”的语义,您的替代方案可能是合理的。不过,我宁愿make uninstall
重做(安装的所有内容)。
我喜欢'make uninstall'撤销'make setup',留下'make clean'来撤消'make'的想法。 – davidchambers 2013-02-23 22:01:30