只是为了增加 Jack Kelly 的建议,您可以在 CMD.EXE shell 中进行存在性测试。NMake 还包括创建临时 .cmd 文件并执行它的能力。
这是 (n)makefile 语法的一个示例,我将其用于“检查语法”目标。它通过编译来检查单个 C# 源文件、多文件项目中的语法。
check-syntax :
<<flymake-build.cmd $(CS_SOURCE)
SETLOCAL ENABLEDELAYEDEXPANSION
set errorlevel=
for %%I in (%*) do if NOT x%%I == x$(FLYMAKE_ORIGINAL) (
set filesToBuild=!filesToBuild! %%I
)
$(_CSC) /t:module $(LIBSREF) $(FLYMAKE_CHECK) !filesToBuild!
ENDLOCAL && exit /b %errorlevel%
<<
“flymake-build.cmd”是创建的临时 cmd 文件的名称。双尖括号 ( <<
) 表示在执行文件之前进入临时文件的内容的开头和结尾。
第一行文件名后面的内容是传递给 .cmd 文件的参数。在此示例中,参数是名为 的 makefile 变量的内容CS_SOURCE
。就我而言,这只是项目中的文件名列表。Makefile 变量也将在临时文件的文本中展开。您可以看到我指的是编译器 ( _CSC
) 和其他一些符号。
在 .cmd 代码中,您可以执行 for 循环、if 语句以及您喜欢的任何操作。这是一个常规的 .cmd 文件。
如果您希望 nmake 响应 .cmd 文件中的命令生成的错误(例如,终止构建),那么您需要使用该exit /b
方法来结束 cmd。
我在某个黑暗的角落找到了这个文档,所以我想我会在这里分享它以进行一般说明。(编辑:这是链接。)