使用nmake检查文件是否存在并删除它

时间:2015-02-18 11:12:54

标签: makefile nmake makefile-project

我正在使用Windows版的NMAKE。我想在make文件中检查文件是否存在。如果它存在,我需要删除它。这是我的代码:

!IF EXIST ("C:\ABC.XML")
    @del ABC.XML
!ELSE
    @echo "FILE DOESN'T EXIST
!ENDIF

以上代码无效。我无法弄清楚问题所在。请帮忙。

1 个答案:

答案 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