0

我在编写 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: * [清理] 错误 1

谢谢, 阿南德

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

4

1 回答 1

1

Make 的foreach功能是文本替换。它实际上并没有为foreach. 因此,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))
于 2013-10-15T13:52:12.520 回答