%% Ernest <[EMAIL PROTECTED]> writes:
e> The GNU make manual, section 10.5.3, mentions the use of the
e> SysV-style automatic variables $$@, $$(@D), and $$(@F), and that
e> these "bizarre" uses are not necessary ("there are other ways to
e> accomplish the same results"). How?
e> For example, I need to do some stuff like what's shown below, where
e> the prereq names are determined by a semi-complex manipulation of
e> the target name (it's actually much more complex than this
e> example). This doesn't work, though.
Right, because you're trying to wrap $$@ in a function; that won't work
because while the expansion of $$@ is delayed, the expansion of the
FUNCTIONS are still immediate (before $$@ is expanded).
Without seeing a REAL example of what you're trying to do it's difficult
to determine how much power you need. Typically there are three ways
you work around the need for $$@, etc.:
1) Static pattern rules, for straightforward situations:
target_types = build comp clobber foo bar biz baz boz
$(target_types:%=%_all) : %_all : %
2) Auto-re-exec: you can include a makefile, then provide a rule to
generate that makefile where the rule constructs the complex data.
Since this happens in a shell script you have all the power of the
shell here:
include all_targets.mk
all_targets.mk: Makefile
@echo <stuff> >> $@
4) If you have GNU make 3.80, you can use the $(eval ...) function.
--
-------------------------------------------------------------------------------
Paul D. Smith <[EMAIL PROTECTED]> 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
_______________________________________________
help-gnu-utils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gnu-utils