未明确使用目标时强制执行模式规则

时间:2013-02-07 17:26:58

标签: makefile rule-engine

我有一个Makefile,负责下载一些所需的javascript文件作为r.js的先决条件

对于他们每个人,我创建了一个.url文件,其中包含可以下载.js文件的网址,并设置了这样的模式规则:

static/js/lib/%.js: jslibsurls/%.url
    curl -L -s -o $@ `cat $<`

但它只下载一个.js文件,如果它是Makefile中某处的显式依赖...

有没有办法让模式规则被执行,如果有一个依赖项匹配它,即使目标尚未使用(它们将在创建时用于通配符)?

1 个答案:

答案 0 :(得分:1)

我想我明白了,我需要使用patsubst文件的名称.url来创建.js并使用结果作为对一个虚假规则的依赖然后,我可以将其用作r.js步骤的依赖项。

DOWNLOADED_LIBS+=$(patsubst jslibsurls/%.url,static/js/lib/%.js,$(wildcard jslibsurls/*.url))

download-libs: $(DOWNLOADED_LIBS)

#this downloads a .js in static/js/lib/ file for each .url file in jslibsurls/
static/js/lib/%.js: jslibsurls/%.url
    curl -L -s -o $@ `cat $<`

.PHONY: download-libs