应该`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重做(安装的所有内容)。

+0

我喜欢'make uninstall'撤销'make setup',留下'make clean'来撤消'make'的想法。 – davidchambers 2013-02-23 22:01:30