在make中设置变量

时间:2013-07-25 22:24:23

标签: makefile

这是我的makefile

file1:
    uglifyjs myfile1.js -c | gzip -c -9 > myfile1.min.js

file2:
    uglifyjs myfile2.js -c | gzip -c -9 > myfile2.min.js

如何更改makefile以删除重复的代码:

file1:
    FILE=myfile1.js
    #How to call build target?

file2:
    FILE=myfile2.js

build:
    uglifyjs $(FILE).js -c | gzip -c -9 > $(FILE).min.js

我知道我可以使用make build但是还有其他方法可以在不调用make的情况下执行此操作吗?

2 个答案:

答案 0 :(得分:1)

使用自动变量:

file1 file2:
        uglifyjs my$@.js -c | gzip -c -9 > my$@1.min.js

当您实际构建的文件为file1时,我不知道您为何使用myfile1.min.js等目标。那不是一个好的makefile。

但是,这不是你问的问题。

答案 1 :(得分:1)

使用模式规则运行命令,然后使目标依赖于所需的文件:

file1: myfile1.min.js
file2: myfile2.min.js

%.min.js: %.js
        uglifyjs $< -c | gzip -c -9 >$@

模式规则告诉make如何从.js文件构建.min.js文件,其他规则告诉它构建特定文件。