Makefile:从数字序列生成目标

时间:2017-09-19 18:18:27

标签: makefile gnu-make

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

我可以用一个非常简单的Makefile做一年:

data/YearData_2000.txt  :  GetYearData.py
  python $< --year 2000 --outfile $@

但是,我想这样做一个循环(或类似的结构),这样,对于bash中的每一年,我都会说YEARS=($(seq $(SYEAR) 1 $(EYEAR))) - 我通过{{1我的脚本并生成--year $(Y)的适当目标?

1 个答案:

答案 0 :(得分:3)

尝试类似:

SYEAR = 2000
EYEAR = 2017

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

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

data/YearData_%.txt : GetYearData.py
        python $< --year $* --outfile $@

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