Robert Mecklenburg wrote:
> 
> > From: "Noel Yap" <[EMAIL PROTECTED]>
> >
> > .PRECIOUS: %/../...
> > %/../...:
> > @mkdir -p $(dir $(patsubst %/,%,$(dir $(@D))))  &&  : >> $(dir $(patsubst
> %/,%,$(dir $(@D))))$(@F)
> 
> Is there a reason why you didn't use either of:
> 
>   @mkdir -p $(dir $(dir $(dir $@)))

This didn't work, $(dir $(dir $@)) returns the same thing as $(dir $@).

>   @mkdir -p $(dir $(patsubst %/../...,%,$@))

I like this much better.  I'll do this.

> I haven't tried them, but I assume they work. ;-)

I'm pretty sure the second one should work.

> I don't care for the file name you've chosen! ;-)  Would something like
> ".creator" be easier on the eyes?  In fact, changing the code from the "fast
> lane" to the "slow lane" yields:

Funny, the originator of this idea was using ".created".

> .PRECIOUS: %.mkdir
> %.mkdir:
>         @mkdir -p $(dir $@)
>         @touch $@
>
> Now I grant you, the "cool factor" of yours is way beyond the "slow"
> version, but this one actually follows Paul's second rule at the cost of
> more files created and visible to the user.  (Not a trivial cost, I admit.)

Although this works, it doesn't work the way one would want.  Here's why:

Let's say you have:

%.o: %.c %.o/../.mkdir

When the %.mkdir rule above gets invoked for, say aoeu.o, it'll create the directory 
aoeu.o.  Definitely not what you want.  Unless I'm missing something.

> A very interesting idea!

Thanks, I wish I could take credit for it, but someone over here came up with it.

Noel
-- 
NOTICE: If received in error, please destroy and notify sender.  Sender does not waive 
confidentiality or privilege, and use is prohibited.


_______________________________________________
Help-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-make

Reply via email to