On Mon, Nov 14, 2011 at 11:26 AM, Paul Smith <[email protected]> wrote:
> On Mon, 2011-11-14 at 11:17 -0500, Marc Smith wrote:
>> Did that behavior change recently in GNU make?
>
> No.
>
>> I've been reading the O'Reilly book titled Managing Projects with GNU
>> Make (3rd edition) and on page 70 it gives this example to highlight
>> the difference between simple/recursive variables with the shell
>> function:
>>
>> START_TIME := $(shell date)
>> CURRENT_TIME = $(shell date)
>> "The START_TIME variable causes the date command to execute once when
>> the variable is defined. The CURRENT_TIME variable will reexecute date
>> each time the variable is used in the makefile."
>
> Sure. But that's at all the same thing as what you did. What you did
> is this:
>
>>> blah = $(shell date)
>>> all:
>>> @ echo $(blah)
>>> @ sleep 10
>>> @ echo $(blah)
>
> In the O'Reilly book they are using first a simple variable which has
> immediate expansion, so START_TIME is evaluated when the makefile is
> read in, while END_TIME is a recursive variable and not evaluated until
> the variable is used.
>
> Your example puts the variables in the same recipe twice. You are
> assuming that make will expand the first line of the recipe, run it,
> expand the second line of the recipe, run that, then expand the third
> line of the recipe and run that.
Gotcha, I'm not trying to be difficult, just wrapping my head around this. =)
So, something like this should yield different values:
--snip--
blah := $(shell date)
blah2 = $(shell date)
all:
@ echo $(blah)
@ sleep 10
@ echo $(blah2)
--snip--
Right?
Is there another way to use the same variable and have the shell
function execute each time the variable is used in a makefile?
Thanks for your help.
--Marc
>
> But that's not how GNU make works, nor has it ever worked that way.
> Instead, make expands the first, second, and third lines at the same
> time and then runs the first one, then the second, then the third in
> order.
>
> --
> -------------------------------------------------------------------------------
> Paul D. Smith <[email protected]> Find some GNU make tips at:
> http://www.gnu.org http://make.mad-scientist.net
> "Please remain calm...I may be mad, but I am a professional." --Mad Scientist
>
>
_______________________________________________
Help-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-make