码:
LIST=0 1 2 3 4 5
PREFIX=rambo
# some looping logic to interate over LIST
Run Code Online (Sandbox Code Playgroud)
预期结果:
rambo0:
sh rambo_script0.sh
rambo1:
sh rambo_script1.sh
Run Code Online (Sandbox Code Playgroud)
由于我的LIST有6个元素,因此应该生成6个目标.将来,如果我想添加更多目标,我希望能够修改我的LIST而不是触及代码的任何其他部分.
如何编写循环逻辑?
Ide*_*lic 19
如果您使用的是GNU make,则可以在运行时生成任意目标:
LIST = 0 1 2 3 4 5
define make-rambo-target
rambo$1:
sh rambo_script$1.sh
all:: rambo$1
endef
$(foreach element,$(LIST),$(eval $(call make-rambo-target,$(element))))
Run Code Online (Sandbox Code Playgroud)
Mic*_*ber 13
使用文本转换功能.随着patsubst你可以进行非常一般的转换.用于构造文件名,addsuffix并且addprefix都很方便.
对于规则,请使用模式规则.
整体结果可能如下所示:
LIST = 0 1 3 4 5
targets = $(addprefix rambo, $(LIST))
all: $(targets)
$(targets): rambo%: rambo%.sh
sh $<
Run Code Online (Sandbox Code Playgroud)