Я хочу определить множество правил следующим образом:
x-9: y-9 z-9 x-8
python gen-files.py --out-x=x-9 --out-y=y-9 --in-x=x-8
x-8: y-8 z-8 x-7
python gen-files.py --out-x=x-8 --out-y=y-8 --in-x=x-7
x-7: y-7 z-7 x-6
python gen-files.py --out-x=x-7 --out-y=y-7 --in-x=x-6
x-6: y-6 z-6 x-5
python gen-files.py --out-x=x-6 --out-y=y-6 --in-x=x-5
x-5: y-5 z-5 x-4
python gen-files.py --out-x=x-5 --out-y=y-5 --in-x=x-4
x-4:
touch x-4
Как видите, основная идея в том, что у меня есть цель
выходной_файл-НОМЕР:
, который имеет пару зависимостей, либо содержащих NUMBER
в своем имени, либо содержащих NUMBER-MINUS-ONE
в своем имени.
Моя цель заключается в том, чтобы при попытке построить конечную цель x-9
она автоматически x-8
, x-7
... снижалась до x-4
.
Я пробовал что-то вроде
define oprule
x-$(1): x-$(1) y-$(1) z-$(1) x-$(2)
python gen-files.py --out-x=x-$(1) --out-y=y-$(1) --in-x=x-$(2)
endef
ttt = 9 8 7 6 5
$(foreach now, $(ttt), \
$(call oprule, $(now), $(shell $$(( $(now)-1 )) ) ) )
Я думал, что это сгенерирует 5 правил, но когда я попробую
make x-9
Я получаю сообщение
Makefile:93: *** multiple target patterns. Stop.
и я не знаю, что происходит.