生成文件中的命令

描述块或推理规则指定在依赖项过期时要运行的命令块。 NMAKE 在运行命令之前显示每条命令,除非使用了 /S.SILENT!CMDSWITCHES@。 如果描述块后面没有命令块,NMAKE 会查找匹配的推理规则。

一个命令块包含一个或多个命令,每个命令独占一行。 依赖项或规则与命令块之间不能出现空行。 但是,可能会出现仅包含空格或制表符的行;此行被解释为空命令,并且不会发生错误。 命令行之间允许有空行。

命令行以一个或多个空格或制表符开头。 后跟换行符的反斜杠 (\) 被解释为命令中的空格。 在行尾使用反斜杠将命令继续到下一行。 如果反斜杠后面有任何其他字符(包括空格或制表符),NMAKE 会按字面意思解释反斜杠。

以分号 (;) 开头的命令可以出现在依赖项行或推理规则中,无论后面是否有命令块:

project.obj : project.c project.h ; cl /c project.c

命令修饰符

你可以在命令前指定一个或多个命令修饰符,可以选择用空格或制表符分隔。 与命令一样,修饰符必须缩进。

修饰符 目的
@命令 防止显示命令。 不会禁止按命令显示。 默认情况下,NMAKE 回显所有执行的命令。 使用 /S 可禁止显示整个生成文件;使用 .SILENT 可禁止显示部分生成文件。
-[number] 命令 关闭命令的错误检查。 默认情况下,如果命令返回非零退出代码,NMAKE 将停止。 如果使用 -number ,则 NMAKE 在退出代码超过 number 时停止。 破折号和数字之间不能出现空格或制表符。在 number 和 command 之间必须至少出现一个空格或制表符。 使用 /I 关闭整个生成文件的错误检查;使用 .IGNORE 可关闭部分生成文件的错误检查。
!命令 如果命令使用 $**(依赖项中的所有依赖文件)或 $?(依赖项中的所有依赖文件,其时间戳晚于目标),则为每个依赖文件执行命令。

文件名部分语法

命令中的文件名部分语法表示第一个依赖文件名的组件(可能是隐含的依赖)。 文件名组件是指定的文件驱动器、路径、基本名称和扩展名,而不是磁盘上存在的文件名。 使用 %s 表示完整的文件名。 使用 %|[parts]F (百分号后面的竖线字符)表示文件名的各个部分,其中 parts 可以是以下字母中的零个或多个(任意顺序)。

信件 说明
无字母 完整名称(与 %s 相同)
d 驱动器
p 路径
f 文件基础名称
e 文件扩展名

例如,如果文件名是 c:\prog.exe

  • %s 变为 c:\prog.exe

  • %|F 变为 c:\prog.exe

  • %|dF 变为 c

  • %|pF 变为 c:\

  • %|fF 变为 prog

  • %|eF 变为 exe

你想进一步了解什么?

生成文件中的内联文件

另请参阅

NMAKE 参考