1

这是我的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 的情况下做到这一点?

4

2 回答 2

1

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

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

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

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

于 2013-07-25T22:54:49.290 回答
1

使用自动变量:

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

我不知道您为什么要使用目标,例如file1您实际构建的文件是myfile1.min.js. 这不是一个好的makefile。

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

于 2013-07-25T22:39:57.020 回答