我有一个目录,我从某个地方下载一些数据,我希望通过脚本执行某些操作。当所述目录尚不存在时,我希望make
自动下载文件,我也希望能够通过运行make fetch
来启动这些文件。但是,我不希望每次为另一个目标运行make时都会启动下载过程。
到目前为止我的尝试:
.PHONY: fetch
fetch: data/www.example.org
foo.dat: | data/www.example.org
somescript > foo.dat
data/www.example.org:
wget --mirror --prefix-directory=data http://www.example.org
除了当我运行make fetch
它给我:
$ make fetch
make: Nothing to be done for `fetch'.
当然,我可以简单地将data/www.example.org
的食谱复制到fetch
,但由于配方将来会变得更复杂,我想避免这种解决方案。
修改
事后看来有点明显,但出于某种原因,我没有想到使用变量。我想,我的思绪一直在寻找某种" neater"办法。但 确实为我解决了,所以感谢l0b0向我指出:FETCH = wget --mirror --prefix-directory=data http://www.example.org
.PHONY: fetch
fetch:
$(FETCH)
foo.dat: | data/www.example.org
somescript > foo.dat
data/www.example.org:
$(FETCH)