Makefile中的别名目标名称或替代方法

时间:2016-03-26 18:00:15

标签: makefile

我有一个目录,我从某个地方下载一些数据,我希望通过脚本执行某些操作。当所述目录尚不存在时,我希望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)

0 个答案:

没有答案