我有一个Makefile,它定义了一个.PHONY干净目标来清理.o文件和可执行文件,该目标看起来像:

...
.PHONY : clean
clean:
    rm $(addprefix $(vq_DIR),$(vq_OBJS)) \
       $(addprefix $(vq_DIR),vq) \
       $(addprefix $(covq_DIR),$(covq_OBJS)) \
       $(addprefix $(covq_DIR),covq) \
       $(addprefix $(covq_2_DIR),$(covq_2_OBJS)) \
       $(addprefix $(covq_2_DIR),covq_2) \
       $(addprefix $(covq_2_DIR),$(test_OBJS)) \
       $(addprefix $(covq_2_DIR),test)

一切正常,但是当其中一些文件不存在时,rm引发错误(无此类文件或目录),并且输出显示Makefile目标失败,这显然是我想要的。

有没有一种基本方法告诉rm命令“删除这些文件(如果存在),并且不抱怨,如果不存在”)?我在联机帮助页中查找rm,但没有找到这样的标志。

编辑:实际上我没有在手册页中注意到-f标志的描述,这是解决方案。

最佳答案

在您的rm -f规则中,使用$(RM)(或内置make规则提供的更好的make -p,可以使用rm找到),而不是clean

关于linux - 如何避免 “No such file or directory” Makefile目标的 `make clean`错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21949237/

10-09 20:07