NMAKE的命令行语法
语法:
NMAKE [options] [macros] [targets]
其中,options是NMAKE的选项,macros是在命令行中的宏定义,targets是NMAKE的目标文件列表。
选项(忽略大小写):
1) /A 强制重新构件所有与NMAKE的target相关的dependents,即使这些dependents 并没有过期;
2) /B 即使dependent与target有相同的time stamp,也重建该target。大部分的OS中的time stamp是以2秒为单位的,如果一个2秒之内被修改,那么它的time stamp将不会有任何变化。在这种情况下,你就需要使用该选项让NMAKE重建之。为了预防万一,总是应该使用该选项,尽管可能会导致不必要的重建操作。
3) /C 屏蔽掉大部分的NMAKE输出信息,包括:非致命错误信息,警告信息,time stamp和版权信息。如果/C和/K选项同时存在,则/K发出的警告信息也会被干掉。
4) /D 在NMAKE执行期间显示相关的信息。包括每个文件的time stamp,依赖关系,以及类似于“文件不存在”之类的提示信息。用于对makefile除错;
5) /E 使环境变量可以覆盖预定义宏;
6) /F filename 指定makefile的名字。如果用“-”代替filename,则NMAKE从STDIN 获取makefile的输入(对于键盘终端,用F6或CTRL+Z来结束输入)。可以指定多个makefile,每个makefile前都要有一个/F。
如果没有/F选项,则NMAKE会在当前目录查找一个名为MAKEFILE(没后缀)的文件作为makefile,如果找不到,则对命令行目标文件使用推导规则。
7) /HELP 显示帮助;
8) /I 忽略makefile中所有指令的返回值;
9) /K 当某条指令出现错误时并不退出而是继续执行其他指令。在默认的情况下,如果任何一条指令返回非0值,NMAEK就回终止执行。当打开/K选项后,NMAKE会继续执行其他指令,但不会构建与出错指令相关的文件,而是发出一条警告信息。如果/K选项打开,同时构建无法完成,则NMAKE返回1;
10) /M 在MS-DOS下,将NMAKE程序交换到磁盘中,以腾出更多的内存。
11) /N 显示但不执行makefile 中的命令(预处理命令除外),用于DEBUG;
12) /NOLOGO 禁止NMAKE版权信息;
13)
/P 在执行NMAKE之前,将所有NMAKE信息输出到STDOUT,包括所有的宏定义,IR,目标文件描述和.SUFFIXES list。如果打开
/P选项,而且不指定任何目标文件,则NMAKE仅显示相关信息。
14) /Q 检查target和dependent的time stamp,但不执行commands block。如果目标文件为有效的,则返回0,否则返回255。只有makefile中的预处理命令会被执行。当在批处理文件中调用NMAKE时,该选项会十分有用。
15) /R 清除.SUFFIXES list,忽略所有的IR和TOOLS.INI中定义的或预定义的宏。
16) /S 禁止makefile中所有的被执行指令的显示信息;
17) /T 将命令行中输入文件的time stamp改为当前时间,只执行预处理命令而不执行commands block,目标文件的内容不会被改变;
18) /V 当NMAKE被递归调用时,所有定义的宏都会被继承。在默认的情况下,只有在命令行中定义的宏和环境变量(实际上也是一个宏)是可以被继承的。
19) /X filename 将NMAKE的所有错误信息输出到filename指定的文件或设备中。如果用“-”代替filename,则错误信息会被输出到STDOUT。在默认情况下,错误信息输出到STDERR。该选项不会影响由makefile中的指令产生的到STDERR的输出。
20) /? 显示NMAKE的语法和可用选项;
NMAKE的返回值
NMAKE的返回值及其含义见下表:
值 含义
0 没有错误
1 没有完全执行commands block中的指令(只在/K选项打开时有效)
2 程序错误,可能的原因包括:
l makefile的语法错误
l commands block中的某条指令出现错误
l 用户中断
4 系统错误,例如内存不足
255 在/Q选项打开时,如果目标文件已过期,则返回该值