Часто вы можете избежать такого дублирования, используя шаблоны и списки. В вашем случае, поскольку зависимости, кажется, не следуют простому шаблону, вы должны явно определить любые уникальные зависимости, связанные с файлом. Предполагая, что каждый .rds
зависит от соответствующего .R
файла, вы можете устранить некоторые дубликаты, используя правило статического шаблона, следующим образом:
RDS_FILES := ds_mtcars.rds ds_mt_agg.rds ds_mt_temp.rds
all:
# define any unique dependencies explicitly:
ds_mtcars.rds: ds_mt_raw.csv
ds_mt_agg.rds: ds_mtcars.rds
ds_mt_temp.rds: ds_mtcars.rds ds_mt_agg.rds
# use Static pattern rule --
# explicit dependencies will be stacked
$(RDS_FILES) : %.rds : %.R
Rscript $<
.Phony: all
all: $(RDS_FILES)
Вам все равно придется перечислить каждую цель со специальными зависимостямикак в начальном списке (RDS_LIST
), так и в специальных правилах зависимостей.