On Fri, Oct 03, 2003 at 05:26:54PM -0400, Paul D. Smith wrote:
>
> No make expands $* in the prerequisites list to the name of the target.
Hmmm..
foo.o : _$* FORCE
echo $^
FORCE:
I expected make to print out:
make: *** No rule to make target `_foo.o', needed by `foo.o'. Stop.
But I got:
make: *** No rule to make target `_', needed by `foo.o'. Stop.
That seems to me that make does not expand $* to the target.
See also the manual:
Section: Missing:
* In some Unix `make's, the automatic variable `$*' appearing in the
prerequisites of a rule has the amazingly strange "feature" of
expanding to the full name of the _target of that rule_. We cannot
imagine what went on in the minds of Unix `make' developers to do
this; it is utterly inconsistent with the normal definition of
`$*'.
And it does not seem to happen in the above example.
> The only way to do what you want is to use the $(eval ...) function to
> declare extra dependencies. Something like:
>
> OBJS = foo.o
> deps_foo.o := foo.h
>
> $(foreach target,$(OBJS),$(eval $(target): $$(deps_$(target))))
Not an option for me - I have to support 3.79.1.
Thanks for feedback.
Sam
_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make