2011-10-27 98 views
0

我想用Google Closure Compiler來編譯我的js代碼。我寫了一個makefile來完成這個工作,但是它永遠不會生效。 我想是編譯文件列表中,輸出中列出的每個文件,它../js/爲什麼這個makefile沒有生效

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/$< 

回答

0

在目前的配方,所有的WP對象取決於所有js文件,只有第一個源文件曾經編譯過(thermometer.js)。

你應該喜歡制定Makefile中的最後兩行與模式規則:

all : $(wp) 
../js/%.js : %.js 
    java -jar compiler.jar --js=$< [email protected] 
+0

那麼,輸出不是'../ js/$ @',路徑已經在'$ @'中了。 –

+0

@ MichaelKrelin-hacker:謝謝,修正。 – thiton

+0

謝謝。但我在這裏得到一個錯誤。看起來第二行沒有正確展開。 make:***沒有規則來製作'../js/logic.combat.js',這是'all'所需要的。停止 。 – waTer

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=$< [email protected] 

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