使用 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
我正在使用 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