Here is a table of all the options
These options are ignored for compatibility with other versions of
Consider all targets out-of-date. GNU
make proceeds to
consider targets and their prerequisites using the normal algorithms;
however, all targets so considered are always remade regardless of the
status of their prerequisites. To avoid infinite recursion, if
MAKE_RESTARTS (see Other Special
Variables) is set to a number greater than 0 this option is disabled
when considering whether to remake makefiles (see How Makefiles Are Remade).
Change to directory
dir before reading the makefiles. If multiple
-C’ options are specified, each is interpreted relative to the
previous one: ‘
-C / -C etc’ is equivalent to ‘
This is typically used with recursive invocations of
(see Recursive Use of
Print debugging information in addition to normal processing. The
debugging information says which files are being considered for
remaking, which file-times are being compared and with what results,
which files actually need to be remade, which implicit rules are
considered and which are applied—everything interesting about how
make decides what to do. The
-d option is equivalent to
--debug=a’ (see below).
Print debugging information in addition to normal processing. Various levels and types of output can be chosen. With no arguments, print the “basic” level of debugging. Possible arguments are below; only the first character is considered, and values must be comma- or space-separated.
All types of debugging output are enabled. This is equivalent to using
Basic debugging prints each target that was found to be out-of-date, and whether the build was successful or not.
A level above ‘
basic’; includes messages about which makefiles were
parsed, prerequisites that did not need to be rebuilt, etc. This option
also enables ‘
Prints messages describing the implicit rule searches for each target.
This option also enables ‘
Prints messages giving details on the invocation of specific sub-commands.
By default, the above messages are not enabled while trying to remake
the makefiles. This option enables messages while rebuilding makefiles,
too. Note that the ‘
all’ option does enable this option. This
option also enables ‘
Disable all debugging currently enabled. If additional debugging flags are encountered after this they will still take effect.
Give variables taken from the environment precedence over variables from makefiles. See Variables from the Environment.
string as makefile syntax. This is a command-line
version of the
eval function (see Eval Function). The
evaluation is performed after the default rules and variables have
been defined, but before any makefiles are read.
Read the file named
file as a makefile.
See Writing Makefiles.
Remind you of the options that
make understands and then exit.
Ignore all errors in recipes executed to remake files. See Errors in Recipes.
Specifies a directory
dir to search for included makefiles.
See Including Other Makefiles. If several ‘
options are used to specify several directories, the directories are
searched in the order specified.
Specifies the number of recipes (jobs) to run simultaneously. With no
make runs as many recipes simultaneously as possible.
If there is more than one ‘
-j’ option, the last one is effective.
See Parallel Execution, for more information on how
recipes are run. Note that this option is ignored on MS-DOS.
Continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other prerequisites of these targets can be processed all the same. See Testing the Compilation of a Program.
Specifies that no new recipes should be started if there are other
recipes running and the load average is at least
floating-point number). With no argument, removes a previous load
limit. See Parallel Execution.
On systems that support symbolic links, this option causes
to consider the timestamps on any symbolic links in addition to the
timestamp on the file referenced by those links. When this option is
provided, the most recent timestamp among the file and the symbolic
links is taken as the modification time for this target file.
Print the recipe that would be executed, but do not execute it (except in certain circumstances). See Instead of Executing Recipes.
Do not remake the file
file even if it is older than its
prerequisites, and do not remake anything on account of changes in
file. Essentially the file is treated as very old and its rules
are ignored. See Avoiding Recompilation of
Ensure that the complete output from each recipe is printed in one
uninterrupted sequence. This option is only useful when using the
--jobs option to run multiple recipes simultaneously
(see Parallel Execution) Without this option output
will be displayed as it is generated by the recipes.
With no type or the type ‘
target’, output from the entire recipe
of each target is grouped together. With the type ‘
from each line in the recipe is grouped together. With the type
recurse’, the output from an entire recursive make is grouped
together. With the type ‘
none’, no output synchronization is
performed. See Output During Parallel Execution.
Print the data base (rules and variable values) that results from
reading the makefiles; then execute as usual or as otherwise
specified. This also prints the version information given by the
-v’ switch (see below). To print the data base without trying
to remake any files, use ‘
make -qp’. To print the data base
of predefined rules and variables, use ‘
make -p -f /dev/null’.
The data base output contains file name and line number information for
recipe and variable definitions, so it can be a useful debugging tool
in complex environments.
“Question mode”. Do not run any recipes, or print anything; just return an exit status that is zero if the specified targets are already up to date, one if any remaking is required, or two if an error is encountered. See Instead of Executing Recipes.
Eliminate use of the built-in implicit rules (see Using Implicit Rules). You can still define your own by writing
pattern rules (see Defining and Redefining Pattern
Rules). The ‘
-r’ option also clears out the default list of
suffixes for suffix rules (see Old-Fashioned Suffix
Rules). But you can still define your own suffixes with a rule for
.SUFFIXES, and then define your own suffix rules. Note that only
rules are affected by the
-r option; default variables
remain in effect (see Variables Used by Implicit
Rules); see the ‘
-R’ option below.
Eliminate use of the built-in rule-specific variables (see Variables Used by Implicit Rules). You can still define
your own, of course. The ‘
-R’ option also automatically enables
-r’ option (see above), since it doesn’t make sense to have
implicit rules without any definitions for the variables that they use.
Silent operation; do not print the recipes as they are executed. See Recipe Echoing.
Cancel the effect of the ‘
-k’ option. This is never necessary
except in a recursive
make where ‘
-k’ might be inherited
from the top-level
(see Recursive Use of
or if you set ‘
MAKEFLAGS in your environment.
Touch files (mark them up to date without really changing them)
instead of running their recipes. This is used to pretend that the
recipes were done, in order to fool future invocations of
make. See Instead of Executing Recipes.
Show tracing information for
make execution. Prints the entire
recipe to be executed, even for recipes that are normally silent (due
.SILENT or ‘
@’). Also prints the makefile name and
line number where the recipe was defined, and information on why the
target is being rebuilt.
Print the version of the
make program plus a copyright, a list
of authors, and a notice that there is no warranty; then exit.
Print a message containing the working directory both before and after
executing the makefile. This may be useful for tracking down errors
from complicated nests of recursive
See Recursive Use of
make. (In practice, you
rarely need to specify this option since ‘
make’ does it for you;
see The ‘
Disable printing of the working directory under
This option is useful when
-w is turned on automatically,
but you do not want to see the extra messages.
See The ‘
Pretend that the target
file has just been modified. When used
with the ‘
-n’ flag, this shows you what would happen if you were
to modify that file. Without ‘
-n’, it is almost the same as
touch command on the given file before running
make, except that the modification time is changed only in the
See Instead of Executing Recipes.
Issue a warning message whenever
make sees a reference to an
undefined variable. This can be helpful when you are trying to debug
makefiles which use variables in complex ways.