在makefile规则目标

时间:2016-03-30 13:55:04

标签: makefile gnu-make

我有一个makefile,用于从Web获取一些数据集并将它们解压缩到文件夹中(由存档名称给出)。不幸的是,网站上的档案分组在一个文件夹结构中。例如,如果我想要dataset.tar.gz,它是集合DIR1的一部分,我会使用:www.example.com/DIR1/dataset.tar.gz调用wget。

然后将其下载到dataset.tar.gz,然后我可以使用tar -xzf进行提取。我的makefile目前是:

URL = www.example.com
FILES = DIR1/something.url DIR2/another.url
FOLDERS = $(notdir $(patsubst %.url, %, $(FILES)) )

%.url: # do nothing

%.tar.gz : %.url
    wget -q $(URL)/$<

% : %.tar.gz
    tar -xzf $<

all: $(FOLDERS)

不幸的是,规则%.tar.gz : %.url的目标并未解析为(例如)something.tar.gz,而是解析为DIR1/something.tar.gz,即使它产生了预期的文件。

当我重新运行makefile时会出现问题,因为它没有检测到something.tar.gz(因为它正在寻找DIR1/something.tar.gz),并重新下载数据集,浪费时间和带宽。

有没有办法从makefile目标中删除前缀/目录,即从规则DIR1中删除%.tar.gz : %.url,以便makefile正确检查是否满足?

0 个答案:

没有答案