我是一個新手,並試圖用它來部署一些javascript文件。我一直在努力解決以下問題一段時間沒有成功。動態目標在製作
我的目錄結構如下:
helpers/
foo/
foo.js
test/
test1.js
test2.js
...
bar/
bar.js
test/
test1.js
test2.js
...
other helpers...
distrib/
files ready for distribution
other stuff...
我的makefile應該建立,除其他事項外,傭工。對於每個幫手foo
,我想在distrib下生成以下文件:foo-version.js
,foo-version-uncommented.js
,foo-version-packed.js
和foo-version-tests.zip
。前三個分別作爲副本,通過剝離註釋並運行javascript minifier,由foo.js獲得。我已經有執行這些任務的命令。
的版本號應該在文件本身,我可以很容易地與
def version
$(shell cat $1 | grep @version | sed -e"s/.*version *//")
endef
我的問題做的評論閱讀的是,像foo-version.js
目標是動態的,因爲它們依賴於版本號,在運行make時讀取。我試圖使用模式,但我沒有做到這一點。問題是,這樣的事情是行不通的
helpers := foo bar
helpers: $(helpers)
$(helpers): %: $(call version, %)
因爲第二%未在宏調用擴展,但它字面上使用。
我需要能夠做make helpers
建立所有幫助者或make foo
建立一個。第二步是使用較低的版本號刪除distrib
下的所有文件。任何想法如何做到這一點?
作爲一個側面的問題:使用不同的構建工具,這樣的任務會更容易嗎?我不是專家,學習別的東西可能是痛苦的。
你使用什麼版本的Make? (嘗試「make -v」找出答案。) – Beta 2010-11-25 19:36:15