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

check for file existence using nmake and delete it

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

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

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

您的代码不起作用,因为 !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