我写了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
谢谢, 阿南德
我正在重新发布这个问题,因为我没有收到任何答案。
答案 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))