Thanks for the prompt reply.

I rewrote the targets with the pattern rules as you
suggested, and it now works fine.

Still not sure why that the behaviour I saw had the
"sleep" dependency though.  Even given that the rule I wrote 
was essentially two separate rules, I would have expected
the visit to the second of those rules merely to return
with a "Nothing to do for ...".

cheers,
t


"Paul D. Smith" <[EMAIL PROTECTED]> writes:

> %% Tommy Kelly <[EMAIL PROTECTED]> writes:
> 
>   tk> I'm seeing an intermittent (i.e. two consecutive invocations
>   tk> can be different) results when I have a command which
>   tk> produces two targets.  It occurs when both targets are 
>   tk> themselves given as dependencies of the same higher target.
> 
>   tk> sli4515:tommyk> cat Makefile
>   tk> default : clean foo bar
> 
>   tk> foo bar :
>   tk>         touch foo bar
>   tk>         sleep 1
> 
> This doesn't do what you think it does.  This rule is identical to:
> 
>   foo:
>         touch foo bar
>         sleep 1
>   bar:
>         touch foo bar
>         sleep 1
> 
> That is, listing multiple targets in a normal rule are treated as if
> you'd declared that rule for each target, _NOT_ as if that one command
> script builds both targets.
> 
> See the GNU make manual discussion of the syntax of rule definitions.
> 
> So, you can see why you're getting the behavior you are.
> 
> The only way to do what you want is either with a dummy target, or using
> multiple targets in a pattern rule, which _does_ behave this way (see
> this section of the manual).
> 
> -- 
> -------------------------------------------------------------------------------
>  Paul D. Smith <[EMAIL PROTECTED]>          Find some GNU make tips at:
>  http://www.gnu.org                      http://www.paulandlesley.org/gmake/
>  "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

Reply via email to