[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: question about Generating Prerequisites Automatically
From: |
Paul D. Smith |
Subject: |
Re: question about Generating Prerequisites Automatically |
Date: |
Wed, 3 May 2006 08:24:55 -0400 |
This section tells you pretty much everything there is to know about
intermediate files.
The definition:
However, even if `N.c' does not exist and is not mentioned [in the
makefile], `make' knows how to envision it as the missing link between
`N.o' and `N.y'! In this case, `N.c' is called an "intermediate
file".
And how they behave:
Once `make' has decided to use the intermediate file, it is entered in
the data base as if it had been mentioned in the makefile, along with
the implicit rule that says how to create it.
Intermediate files are remade using their rules just like all other
files. But intermediate files are treated differently in two ways.
The first difference is what happens if the intermediate file does
not exist. If an ordinary file B does not exist, and `make' considers
a target that depends on B, it invariably creates B and then updates
the target from B. But if B is an intermediate file, then `make' can
leave well enough alone. It won't bother updating B, or the ultimate
target, unless some prerequisite of B is newer than that target or
there is some other reason to update that target.
The second difference is that if `make' _does_ create B in order to
update something else, it deletes B later on after it is no longer
needed. Therefore, an intermediate file which did not exist before
`make' also does not exist after `make'. `make' reports the deletion
to you by printing a `rm -f' command showing which file it is deleting.
Ordinarily, a file cannot be intermediate if it is mentioned in the
makefile as a target or prerequisite. However, you can explicitly mark
a file as intermediate by listing it as a prerequisite of the special
target `.INTERMEDIATE'. This takes effect even if the file is mentioned
explicitly in some other way.
You can prevent automatic deletion of an intermediate file by
marking it as a "secondary" file. To do this, list it as a
prerequisite of the special target `.SECONDARY'. When a file is
secondary, `make' will not create the file merely because it does not
already exist, but `make' does not automatically delete the file.
Marking a file as secondary also marks it as intermediate.
--
-------------------------------------------------------------------------------
Paul D. Smith <address@hidden> Find some GNU make tips at:
http://www.gnu.org http://make.paulandlesley.org
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/03
- Re: question about Generating Prerequisites Automatically,
Paul D. Smith <=
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/03
- Re: question about Generating Prerequisites Automatically, Paul D. Smith, 2006/05/03
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/04
- Re: question about Generating Prerequisites Automatically, Paul D. Smith, 2006/05/04
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/07
- Re: question about Generating Prerequisites Automatically, Paul D. Smith, 2006/05/07
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/08
- Re: question about Generating Prerequisites Automatically, Paul D. Smith, 2006/05/08
- Re: question about Generating Prerequisites Automatically, Lin George, 2006/05/09
- Re: question about Generating Prerequisites Automatically, Paul D. Smith, 2006/05/10