Если у вас есть конечное число возможностей для каждого сегмента, один вариант, если вы делаете что-то вроде:
targs := $(foreach v1,foo foo1 foo2,\
$(foreach v2,bar bar1 bar2,\
$(foreach v3,foobar1 foobar2 foobar3, \
$(v1)-$(v2)-$(v3))))
$(targs) :
@IFS=- read v1 v2 v3 <<< $@; \
echo $$v1 $$v2 $$v3
в противном случае, если первый сегмент всегда foo-
, вы можете сделать:
foo-% :
IFS=- read v1 v2 v3 <<< $@; \
echo $$v1 $$v2 $$v3
Помимо этого, вам, вероятно, потребуется создать сценарий, чтобы вручную разбить цель на части, и потенциально вызвать субмаки, если вы хотите использовать эти части в качестве отдельных целей.