db2
Testing the Compilation of a Program
Contents|Index|Previous|Next
Testing the Compilation of a Program
Normally, when an error happens in executing a shell command, make gives up immediately, returning a nonzero status. No further commands are
executed for any target. The error implies that the goal cannot be correctly
remade, and make reports this as soon as it knows.
When you are compiling a program that you have just changed, this is not what
you want. Instead, you would rather that
make try compiling every file that can be tried, to show you as many compilation
errors as possible.
On these occasions, you should use the ‘
-k’ or ‘--keep-going’ flag. This tells make to continue to consider the other dependencies of the pending targets,
remaking them if necessary, before it gives up and returns nonzero status. For
example, after an error in compiling one object file, ‘make -k’ will continue compiling other object files even though it already knows that
linking them will be impossible. In addition to continuing after failed shell
commands, ‘make -k’ will continue as much as possible after discovering that it does not know
how to make a target or dependency file. This will always cause an error message,
but without ‘-k’, it is a fatal error (see Summary of Options).
The usual behavior of
make assumes that your purpose is to get the goals up to date; once make learns
that this is impossible, it might as well report the failure immediately. The ‘-k’ flag says that the real purpose is to test as much as possible of the
changes made in the program, perhaps to find several independent problems so that you
can correct them all before the next attempt to compile. This is why Emacs’ M-x compile command passes the ‘-k’ flag by default.
0