我有一个Makefile,负责下载一些所需的javascript文件作为r.js
的先决条件
对于他们每个人,我创建了一个.url
文件,其中包含可以下载.js
文件的网址,并设置了这样的模式规则:
static/js/lib/%.js: jslibsurls/%.url
curl -L -s -o $@ `cat $<`
但它只下载一个.js
文件,如果它是Makefile中某处的显式依赖...
有没有办法让模式规则被执行,如果有一个依赖项匹配它,即使目标尚未使用(它们将在创建时用于通配符)?
答案 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