描述块或推理规则指定在依赖项过期时要运行的命令块。 NMAKE 在运行命令之前显示每条命令,除非使用了 /S 、 .SILENT 、 !CMDSWITCHES 或 @ 。 如果描述块后面没有命令块,NMAKE 会查找匹配的推理规则。
/S
.SILENT
!CMDSWITCHES
@
一个命令块包含一个或多个命令,每个命令独占一行。 依赖项或规则与命令块之间不能出现空行。 但是,可能会出现仅包含空格或制表符的行;此行被解释为空命令,并且不会发生错误。 命令行之间允许有空行。
命令行以一个或多个空格或制表符开头。 后跟换行符的反斜杠 ( \ ) 被解释为命令中的空格。 在行尾使用反斜杠将命令继续到下一行。 如果反斜杠后面有任何其他字符(包括空格或制表符),NMAKE 会按字面意思解释反斜杠。
\
以分号 ( ; ) 开头的命令可以出现在依赖项行或推理规则中,无论后面是否有命令块:
;
project.obj : project.c project.h ; cl /c project.c 命令修饰符 你可以在命令前指定一个或多个命令修饰符,可以选择用空格或制表符分隔。 与命令一样,修饰符必须缩进。 -[number] 命令 关闭命令的错误检查。 默认情况下,如果命令返回非零退出代码,NMAKE 将停止。 如果使用 -number ,则 NMAKE 在退出代码超过 number 时停止。 破折号和数字之间不能出现空格或制表符。在 number 和 command 之间必须至少出现一个空格或制表符。 使用 /I 关闭整个生成文件的错误检查;使用 .IGNORE 可关闭部分生成文件的错误检查。 ! command 如果命令使用 $**(依赖项中的所有依赖文件)或 $?(依赖项中的所有依赖文件,其时间戳晚于目标),则为每个依赖文件执行命令。 文件名部分语法 命令中的文件名部分语法表示第一个依赖文件名的组件(可能是隐含的依赖)。 文件名组件是指定的文件驱动器、路径、基本名称和扩展名,而不是磁盘上存在的文件名。 使用 %s 表示完整的文件名。 使用 %|[parts]F (百分号后面的竖线字符)表示文件名的各个部分,其中 parts 可以是以下字母中的零个或多个(任意顺序)。
你可以在命令前指定一个或多个命令修饰符,可以选择用空格或制表符分隔。 与命令一样,修饰符必须缩进。
-
/I
.IGNORE
!
$**
$?
命令中的文件名部分语法表示第一个依赖文件名的组件(可能是隐含的依赖)。 文件名组件是指定的文件驱动器、路径、基本名称和扩展名,而不是磁盘上存在的文件名。 使用 %s 表示完整的文件名。 使用 %|[parts]F (百分号后面的竖线字符)表示文件名的各个部分,其中 parts 可以是以下字母中的零个或多个(任意顺序)。
%s
%|
F