( Interrupts

Info Catalog ( Errors ( Commands ( Recursion
 5.6 Interrupting or Killing `make'
 If `make' gets a fatal signal while a command is executing, it may
 delete the target file that the command was supposed to update.  This is
 done if the target file's last-modification time has changed since
 `make' first checked it.
    The purpose of deleting the target is to make sure that it is remade
 from scratch when `make' is next run.  Why is this?  Suppose you type
 `Ctrl-c' while a compiler is running, and it has begun to write an
 object file `foo.o'.  The `Ctrl-c' kills the compiler, resulting in an
 incomplete file whose last-modification time is newer than the source
 file `foo.c'.  But `make' also receives the `Ctrl-c' signal and deletes
 this incomplete file.  If `make' did not do this, the next invocation
 of `make' would think that `foo.o' did not require updating--resulting
 in a strange error message from the linker when it tries to link an
 object file half of which is missing.
    You can prevent the deletion of a target file in this way by making
 the special target `.PRECIOUS' depend on it.  Before remaking a target,
 `make' checks to see whether it appears on the prerequisites of
 `.PRECIOUS', and thereby decides whether the target should be deleted
 if a signal happens.  Some reasons why you might do this are that the
 target is updated in some atomic fashion, or exists only to record a
 modification-time (its contents do not matter), or must exist at all
 times to prevent other sorts of trouble.
Info Catalog ( Errors ( Commands ( Recursion
automatically generated byinfo2html