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