为什么这个makefile没有生效

时间:2011-10-27 12:18:57

标签: makefile cygwin

我想使用Google Closure Compiler来编译我的js代码。我编写了一个makefile来完成这项工作,但它永远不会生效。 我想要的是编译filelist中列出的每个文件并将其输出到../ js /

filelist = thermometer.js logic.combat.js analyse.js logic.js

wp := $(foreach k, $(filelist), ../js/$(k))

$(wp) : $(filelist)
    java -jar compiler.jar --js=$< --js_output_file=../js/$<

2 个答案:

答案 0 :(得分:0)

在当前的公式中,所有wp对象都依赖于所有js文件,并且只编译了第一个源文件(thermometer.js)。

您应该使用模式规则在Makefile中制定最后两行:

all : $(wp)
../js/%.js : %.js
    java -jar compiler.jar --js=$< --js_output_file=$@

答案 1 :(得分:0)

首先,您可能需要一些目标来触发它,例如:

all: $(wp)

其次,您将为每个文件获取一个命令java -jar compiler.jar --js=../js/thermometer.js --js_output_file=../js/../js/thermometer.js。哪个不太可能是你的目标。我想你想要这样的东西:

../js/%.js: %.js
    java -jar compiler.jar --js=$< --js_output_file=$@

all: $(addprefix ../js/,$(filelist))