我正在使用Windows版的NMAKE。我想在make文件中检查文件是否存在。如果它存在,我需要删除它。这是我的代码:
!IF EXIST ("C:\ABC.XML")
@del ABC.XML
!ELSE
@echo "FILE DOESN'T EXIST
!ENDIF
以上代码无效。我无法弄清楚问题所在。请帮忙。
答案 0 :(得分:1)
您的代码不起作用,因为!IF
,!ELSE
和!ENDIF
是预处理指令,预处理的结果必须生成有效的makefile。命令仅允许作为Microsoft调用description block的一部分,这些命令需要以具有一个或多个目标以及零个或多个依赖项的依赖关系行开始。
您可以通过在预处理阶段执行命令将它们包含在由brackets ([])包围的预处理指令中来解决此问题。像这样:
!IF EXIST(C:\ABC.XML)
! IF [del C:\ABC.XML]
! ENDIF
!ELSEIF [echo FILE DOESN'T EXIST]
!ENDIF
第二个!IF
和!ELSEIF
指令用于为命令提供上下文,以便在预处理阶段执行它们。
但是我认为您可能最好将del
命令移动到实际需要的描述块。例如,如果在重建文件ABC.XML
之前需要将其删除,请使用以下内容:
ABC.XML: ABC.CSV
-rem The csv2xml translator requires that the XML file not already exist
-@del ABC.XML 2> NUL
csv2xml ABC.CSV ABC.XML