我是一个新手,并试图用它来部署一些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