生成文件预处理指令

预处理指令不区分大小写。 初始感叹号 (!) 必须出现在行首。 感叹号后面可以有零个或多个空格或制表符,用于缩进。

  • !CMDSWITCHES
    {+|}option... 打开或关闭列出的每个 option。 空格或制表符必须出现在 + 或 - 运算符前面;运算符和选项字母之间不能出现任何内容。 字母不区分大小写,并且不用反斜杠 ( / ) 指定。 若要打开某些选项而关闭另外一些选项,请使用 !CMDSWITCHES 的分别指定。

    生成文件中只能使用 /D、/I、/N 和 /S 选项。 在 Tools.ini 文件中可以使用除 /F、/HELP、/NOLOGO、/X 和 /? 选项外的其他所有选项。 一个描述块中指定的更改直到下一个描述块时才生效。 该指令更新 MAKEFLAGS;如果指定了 MAKEFLAGS,则在递归期间继承更改。

  • !ERROR text
    显示错误 U1050 中的 text,然后暂停 NMAKE,即便使用了 /K、/I、.IGNORE!CMDSWITCHES 或短划线 (-) 命令修饰符。 位于 text 之前的空格或制表符被忽略。

  • !MESSAGE text
    显示标准输出的 text。 位于 text 之前的空格或制表符被忽略。

  • !INCLUDE[ <] filename[ >]
    filename 作为生成文件读取,然后继续当前的生成文件。 NMAKE 首先在指定或当前目录中搜索 filename,然后在任何父生成文件的目录中递归搜索,最后,如果 filename 括在尖括号 (< >) 内,则在由 INCLUDE宏(最初设置为 INCLUDE 环境变量)指定的目录中搜索。 对于将 .SUFFIXES 设置、.PRECIOUS 和推理规则传递给递归生成文件很有用。

  • !IF constantexpression
    如果 constantexpression 计算结果为非零值,则处理 !IF 和下一个 !ELSE 或 !ENDIF 之间的语句。

  • !IFDEF macroname
    如果定义了 macroname,则处理 !IFDEF 和下一个 !ELSE 或 !ENDIF 之间的语句。 空宏将被视为尚待定义。

  • !IFNDEF macroname
    如果没有定义 macroname,则处理 !IFNDEF 和下一个 !ELSE 或 !ENDIF 之间的语句。

  • !ELSE[IF constantexpression | IFDEF macroname| IFNDEF macroname]
    如果前面的 !IF、!IFDEF 或 !IFNDEF 语句计算结果为零值,则处理 !ELSE 和下一个 !ENDIF 之间的语句。 可选关键字提供了进一步的预处理控制。

  • !ELSEIF
    !ELSE IF 的同义词。

  • !ELSEIFDEF
    !ELSE IFDEF 的同义词。

  • !ELSEIFNDEF
    !ELSE IFNDEF 的同义词。

  • !ENDIF
    标记 !IF、!IFDEF 或 !IFNDEF 块的结尾。 同一行上 !ENDIF 后面的所有文本被忽略。

  • !UNDEF macroname
    取消定义 macroname

请参见

概念

生成文件预处理