使用makefile中的FOR循环删除文件

时间:2013-10-15 13:46:20

标签: build makefile gnu-make

我写了FOR循环来删除干净目标中的目标文件。我尝试了下面的代码但是我收到了错误消息。有人可以帮我这个吗?

TES_FILE := D:/Technique/Testmake/1.obj
TES_FILE += D:/Technique/Testmake/2.obj

clean:
$(foreach objFile,$(TES_FILE),if exist $(objFile) DEL /F "$(subst /,\,$(objFile))")

错误信息:如果存在D:/Technique/Testmake/1.obj DEL / F“D:\ Technique \ Testmake \ 1.obj”如果存在D:/Technique/Testmake/2.obj DEL / F“D :\ Technique \ Testmake \ 2.obj“无效的开关 - ”技术“。 gmake:* [clean]错误1

谢谢, 阿南德

我正在重新发布这个问题,因为我没有收到任何答案。

1 个答案:

答案 0 :(得分:1)

Make foreach函数是文本替换。它实际上并不为foreach的每个“主体”调用不同的shell或命令。因此,make foreach的结果只是将所有身体实例附加在一起的结果。例如:

$(foreach A,W X Y Z,$(A) $(A))

产生单个字符串W W X X Y Y Z Z。在您的情况下,它会生成一个包含所有if语句的串联的字符串。这当然行不通。

如果你提到为什么,你觉得首先需要一个foreach,这将更容易提供帮助。如果是我,我只会写:

clean:
       DEL /F $(subst /,\,$(TES_FILE))