How to generate targets in a Makefile by iterating over a list?
makefile, shell
Solution
Use text-transforming functions. With `patsubst` you can make quite general transformations. For constructing filenames, `addsuffix` and `addprefix` are both convenient.
For the rules, use pattern rules.
The overall result might look something like this:
LIST = 0 1 3 4 5
targets = $(addprefix rambo, $(LIST))
all: $(targets)
$(targets): rambo%: rambo%.sh
sh $<
Problem
CODE: ``` LIST=0 1 2 3 4 5 PREFIX=rambo # some looping logic to interate over LIST ``` EXPECTED RESULT: ``` rambo0: sh rambo_script0.sh rambo1: sh rambo_script1.sh ``` Since my LIST has 6 elements, 6 targets should be generated. In future, if I want to add more targets, I want to be able to just modify my LIST and not touch any other part of the code. How should the looping logic be written?