CODE:
LIST=0 1 2 3 4 5
PREFIX=rambo
# some looping logic to interate over LIST
EXPECTED RESULT:
rambo0:
sh rambo_script0.s
Just my 2 cents to @Idelic answer, if you need to use some Make $cmd
you must escape them using $$
e.g.
LIST = 0 1 2 3 4 5
define make-rambo-target
$(info create target: $(addprefix rambo_script, $(addsuffix .sh, $1)).)
rambo$1: $$(addprefix rambo_script, $$(addsuffix .sh, $1))
sh $$<
endef
all: $(addprefix rambo, $(LIST))
$(foreach element, $(LIST), $(eval $(call make-rambo-target,$(element))))
output:
$ make
create target: rambo_script0.sh.
create target: rambo_script1.sh.
create target: rambo_script2.sh.
create target: rambo_script3.sh.
create target: rambo_script4.sh.
create target: rambo_script5.sh.
sh rambo_script0.sh
sh rambo_script1.sh
sh rambo_script2.sh
sh rambo_script3.sh
sh rambo_script4.sh
sh rambo_script5.sh
note: here rules "are seen" by Make as
rambo0: $(addprefix rambo_script, $(addsuffix .sh, 0))
sh $<
But here we could have written without escaping i.e.
rambo$1: $(addprefix rambo_script, $(addsuffix .sh, $1))
sh $$<
So rule "are seen" as:
rambo0 : rambo_script0.sh
sh $<
when Make parse it.