Почему этот make-файл не вступает в силу - PullRequest
0 голосов
/ 27 октября 2011

Я хочу использовать компилятор Google Closure для компиляции моих js-кодов. Я пишу make-файл, чтобы выполнить работу, но он никогда не вступает в силу.Я хочу скомпилировать каждый файл, указанный в списке файлов, и вывести его на ../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 голосов
/ 27 октября 2011

Во-первых, вам, вероятно, нужна какая-то цель для ее запуска, например:

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))
0 голосов
/ 27 октября 2011

В текущей формулировке все объекты wp зависят от всех js-файлов, и когда-либо компилируется только первый исходный файл (thermometer.js).

Лучше сформулировать две последние строки вMakefile с шаблонными правилами:

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