9.3 Instead of Executing the Commands
The makefile tells make
how to tell whether a target is up to date,
and how to update each target. But updating the targets is not always
what you want. Certain options specify other activities for make
.
- `-n'
- `--just-print'
- `--dry-run'
- `--recon'
-
"No-op". The activity is to print what commands would be used to make
the targets up to date, but not actually execute them.
- `-t'
- `--touch'
-
"Touch". The activity is to mark the targets as up to date without
actually changing them. In other words, make
pretends to compile
the targets but does not really change their contents.
- `-q'
- `--question'
-
"Question". The activity is to find out silently whether the targets
are up to date already; but execute no commands in either case. In other
words, neither compilation nor output will occur.
- `-W file'
- `--what-if=file'
- `--assume-new=file'
- `--new-file=file'
-
"What if". Each `-W' flag is followed by a file name. The given
files' modification times are recorded by make
as being the present
time, although the actual modification times remain the same.
You can use the `-W' flag in conjunction with the `-n' flag
to see what would happen if you were to modify specific files.
With the `-n' flag, make
prints the commands that it would
normally execute but does not execute them.
With the `-t' flag, make
ignores the commands in the rules
and uses (in effect) the command touch
for each target that needs to
be remade. The touch
command is also printed, unless `-s' or
.SILENT
is used. For speed, make
does not actually invoke
the program touch
. It does the work directly.
With the `-q' flag, make
prints nothing and executes no
commands, but the exit status code it returns is zero if and only if the
targets to be considered are already up to date. If the exit status is
one, then some updating needs to be done. If make
encounters an
error, the exit status is two, so you can distinguish an error from a
target that is not up to date.
It is an error to use more than one of these three flags in the same
invocation of make
.
The `-n', `-t', and `-q' options do not affect command
lines that begin with `+' characters or contain the strings
`$(MAKE)' or `${MAKE}'. Note that only the line containing
the `+' character or the strings `$(MAKE)' or `${MAKE}'
is run regardless of these options. Other lines in the same rule are
not run unless they too begin with `+' or contain `$(MAKE)' or
`${MAKE}' (See section How the MAKE
Variable Works.)
The `-W' flag provides two features:
-
If you also use the `-n' or `-q' flag, you can see what
make
would do if you were to modify some files.
-
Without the `-n' or `-q' flag, when
make
is actually
executing commands, the `-W' flag can direct make
to act
as if some files had been modified, without actually modifying the
files.
Note that the options `-p' and `-v' allow you to obtain other
information about make
or about the makefiles in use
(see section Summary of Options).