Makefile:从数字序列生成目标

Makefile:从数字序列生成目标,makefile,gnu-make,Makefile,Gnu Make,我有兴趣从互联网上的某个位置下载年度数据。 我有一个python脚本GetYearData.py,它实现了这一点,将年份和输出文件名作为命令行参数。 我想在几年的数据上同时运行这个脚本;我想使用Make,这样如果我更改了开始或结束年份,就不必重新下载所有数据 我可以用一个非常简单的Makefile在一年内完成这项工作: data/YearData_2000.txt : GetYearData.py python $< --year 2000 --outfile $@ data/Y

我有兴趣从互联网上的某个位置下载年度数据。 我有一个python脚本
GetYearData.py
,它实现了这一点,将年份和输出文件名作为命令行参数。 我想在几年的数据上同时运行这个脚本;我想使用Make,这样如果我更改了开始或结束年份,就不必重新下载所有数据

我可以用一个非常简单的Makefile在一年内完成这项工作:

data/YearData_2000.txt  :  GetYearData.py
  python $< --year 2000 --outfile $@
data/YearData_2000.txt:GetYearData.py
python$<--2000年--outfile$@
但是,我想做一个循环(或类似的构造),这样,对于bash中的序列中的每一年,我会说
年=($(seq$(SYEAR)1$(EYEAR))
--我将
--年$(Y)
传递给我的脚本,并为
--outfile

生成一个合适的目标,尝试如下操作:

SYEAR = 2000
EYEAR = 2017

YEARS := $(shell seq $(SYEAR) 1 $(EYEAR))

all: $(patsubst %,data/YearData_%.txt,$(YEARS))

data/YearData_%.txt : GetYearData.py
        python $< --year $* --outfile $@
SYEAR=2000
EYEAR=2017年
年份:=$(壳牌公司序列$(SYEAR)1$(EYEAR))
全部:$(patsubst%,数据/年数据%.txt,$(年))
data/YearData_uz%.txt:GetYearData.py
python$<--year$*--outfile$@

如果需要,您可以在make命令行上覆盖
SYEAR
EYEAR

我添加了一个interval函数,该函数生成一个向上或向下计数范围:$(调用interval,start,range[,step])