如何使用make clean删除未知文件?

时间:2015-10-12 16:42:10

标签: makefile delete-file

我写了以下makefile:

text

正如我预期的那样make clean无法正常工作,问题是我不知道在make期间要创建的文件的名称或数量。我知道他们的扩展,但我宁愿不使用通配符+扩展名来避免删除其他文件。而且,我知道我可以让代码打印出它作为输出提供的文件的名称,但是1)代码不是我的,所以我不想改变它,2)代码不只是创建文件,但是有很多文件夹。 还有其他任何选项可以删除我未考虑创建的所有文件吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是GNU make,filter-out函数可能是一个解决方案。假设您有一个要保存在变量KEEP中的文件和目录列表,您可以:

KEEP = <list-of-files-and-directories-to-keep>

clean:
    @echo rm -rf $(filter-out $(KEEP),$(wildcard *))

尝试运行此功能,如果满意,请删除echo。或者,而不是rm,而不是将您不想保留的文件和目录移到临时目录中:

clean:
    @mkdir -p ../backups; \
    mv $(filter-out $(KEEP),$(wildcard *)) ../backups

并手动检查../backups的内容。