Вопрос по shell – Как создать цели в Makefile, перебирая список?

7

КОД:

LIST=0 1 2 3 4 5
PREFIX=rambo

# some looping logic to interate over LIST

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:

rambo0:
    sh rambo_script0.sh

rambo1:
    sh rambo_script1.sh

Поскольку в моем LIST 6 элементов, необходимо сгенерировать 6 целей. В будущем, если я захочу добавить больше целей, я хочу просто изменить свой LIST и не трогать любую другую часть кода.

Как должна быть написана логика цикла?

Ваш Ответ

2   ответа
17

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))))
11

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededpatsubstError: User Rate Limit ExceededaddsuffixError: User Rate Limit ExceededaddprefixError: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit Exceeded.

Error: User Rate Limit Exceeded

LIST = 0 1 3 4 5
targets = $(addprefix rambo, $(LIST))

all: $(targets)

$(targets): rambo%: rambo%.sh
    sh $<
Error: User Rate Limit Exceeded$(info the targets are $(targets))
Error: User Rate Limit Exceeded Lazer
Error: User Rate Limit Exceeded-nError: User Rate Limit Exceeded

Похожие вопросы