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