Вы захотите использовать функцию makefile foreach
:
Вы можете сделать что-то вроде этого:
TARGETS := $(foreach depvar,$(DEPVARS),$(DAT4)$$d/train_index.RDS)
TARGETS += $(foreach depvar,$(DEPVARS),$(DAT2)$$d/train_index.RDS)
TARGETS += $(foreach depvar,$(DEPVARS),$(DAT4)$$d/test_index.RDS)
TARGETS += $(foreach depvar,$(DEPVARS),$(DAT2)$$d/test_index.RDS)
или как-то так:
TARGETS := $(foreach dat,$(DAT4) $(DAT2),$\
$(foreach filename,train_index.RDS test_index.RDS,$\
$(foreach depvar,$(DEPVARS),$(dat)$(depvar)/$(filename))))
Примечание: я использовал трюк $\
, чтобы пропустить несколько строк без добавления пробелов (см. здесь )
Если вы хотите сделать что-то более сложное, вы всегда можете использовать скрипт оболочки, чтобы сделать все.
TARGETS := $(shell somescript a b c)