Build 使用makefile中的FOR循环删除文件
我在写循环删除干净目标中的对象文件时被打动了。我尝试了下面的代码,但收到了错误消息。谁能帮我一下吗Build 使用makefile中的FOR循环删除文件,build,makefile,gnu-make,Build,Makefile,Gnu Make,我在写循环删除干净目标中的对象文件时被打动了。我尝试了下面的代码,但收到了错误消息。谁能帮我一下吗 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:/technolog
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:/technology/Testmake/1.obj DEL/F“D:\technology\Testmake\1.obj”如果存在D:/technology/Testmake/2.obj DEL/F“D:\technology\Testmake\2.obj”无效开关-“technology”。gmake:[clean]错误1
谢谢,
阿南德
我正在重新发布这个问题,因为我没有收到任何答案。Make的
foreach
函数是一个文本替换。它实际上不会为foreach
的每个“主体”调用不同的shell或命令。因此make的foreach的结果就是将所有这些实体实例附加在一起的结果。例如:
$(foreach A,W X Y Z,$(A) $(A))
生成单个字符串W W X Y Y Z Z
。在您的例子中,它生成一个字符串,其中包含所有if
语句的串联。这当然行不通
如果您首先提到为什么您觉得需要一个foreach
,那么会更容易得到帮助。如果是我,我会写:
clean:
DEL /F $(subst /,\,$(TES_FILE))