Hi,

I try to use a template to generate a set of "other" variables based on a
existing set of "base" variables. The "other" variables do not appear to
be created, and show up as being empty. I use a combination of define,
foreach and eval, as explained in section 8.8 of the manual.

Here is my code:

# The default set of variables, base_first_args and base_second_args
base_first_args=one
base_args+=$(base_first_args)
key_list=first

base_second_args=two
base_args+=$(base_second_args)
key_list+=second

TARGETS=base_target

# Templating starts here
define copy_vars
$(1)_$(2)_args=$$(base_$(2)_args)
$(1)_args+=$$($(1)_$(2)_args)
endef

# From now on, users can copy the "base" variables into their own vars
$(foreach key,$(key_list),$(eval $(call copy_vars,other,$(key))))

TARGETS+=other_target

all: $(TARGETS)

%_target:
        @echo RULE: target=$@ args=$*_args expanded_args=$($*_args)

When I type make, it builds both targets, but the echo shows that
$($*_args) value is empty for the variable generated with the template
(e.g. $(other_args) is empty???). Help!

Thanks,
Martin
Using make v3.79.1.








_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to