Share via

NMAKE Options

NMAKE options are described in the following table. Options are preceded by either a slash (/) or a dash (–) and are not case sensitive. Use !CMDSWITCHES to change option settings in a makefile or in Tools.ini.




Forces build of all evaluated targets, even if not out-of-date with respect to dependents. Does not force build of unrelated targets.


Forces build even if timestamps are equal. Recommended only for very fast systems (resolution of two seconds or less).


Suppresses default output, including nonfatal NMAKE errors or warnings, timestamps, and NMAKE copyright message. Suppresses warnings issued by /K.


Displays timestamps of each evaluated target and dependent and a message when a target does not exist. Useful with /P for debugging a makefile. Use !CMDSWITCHES to set or clear /D for part of a makefile.


Causes environment variables to override makefile macro definitions.


If nmake.exe fails at runtime, you can use /ERRORREPORT to send information to Microsoft about these internal errors.

For more information about /ERRORREPORT, see /errorReport (Report Internal Compiler Errors).

/F filename

Specifies filename as a makefile. Spaces or tabs can precede filename. Specify /F once for each makefile. To supply a makefile from standard input, specify a dash (–) for filename, and end keyboard input with either F6 or CTRL+Z.


Displays the makefiles included with the !INCLUDE directive. See Makefile Preprocessing Directives for more information.

/HELP, /?

Displays a brief summary of NMAKE command-line syntax.


Ignores exit codes from all commands. To set or clear /I for part of a makefile, use !CMDSWITCHES. To ignore exit codes for part of a makefile, use a dash (–) command modifier or .IGNORE. Overrides /K if both are specified.


Continues building unrelated dependencies, if a command returns an error. Also issues a warning and returns an exit code of 1. By default, NMAKE halts if any command returns a nonzero exit code. Warnings from /K are suppressed by /C; /I overrides /K if both are specified.


Displays but does not execute commands; preprocessing commands are executed. Does not display commands in recursive NMAKE calls. Useful for debugging makefiles and checking timestamps. To set or clear /N for part of a makefile, use !CMDSWITCHES.


Suppresses the NMAKE copyright message.


Displays information (macro definitions, inference rules, targets, .SUFFIXES list) to standard output, and then runs the build. If no makefile or command-line target exists, it displays information only. Use with /D to debug a makefile.


Checks timestamps of targets; does not run the build. Returns a zero exit code if all targets are up-to-date and a nonzero exit code if any target is not. Preprocessing commands are executed. Useful when running NMAKE from a batch file.


Clears the .SUFFIXES list and ignores inference rules and macros that are defined in the Tools.ini file or that are predefined.


Suppresses display of executed commands. To suppress display in part of a makefile, use the @ command modifier or .SILENT. To set or clear /S for part of a makefile, use !CMDSWITCHES.


Updates timestamps of command-line targets (or first makefile target) and executes preprocessing commands but does not run the build.


Must be used in conjunction with /N. Dumps inline NMAKE files so that the /N output can be used as a batch file.

/X filename

Sends NMAKE error output to filename instead of standard error. Spaces or tabs can precede filename. To send error output to standard output, specify a dash (–) for filename. Does not affect output from commands to standard error.


Disables batch-mode inference rules. When this option is selected, all batch-mode inference rules are treated as regular inference rules.

See Also


Running NMAKE