有一个耗时的步骤,可以压扁一堆文件。
基本上我希望这是有效的语法
%.out: %.input1 %.input2
merge $<1 $<2 $@
doit: project.out
# project.out merged
我远不是一个makefile专家,但是我喜欢使用.SULFFIXS来做这个,当只有两个文件时,将很好地适应两个输入,或两个输出以备将来使用...
.SULFFIX: .in.out
.in.out:
dosomething $< $@
doit: project.out
GNU Make 3.81
我已经找到了几个关于如何使用具有多个输出的规则的讨论,但没有一个具有多个输入。
答案 0 :(得分:2)
%.out: %.input1 %.input2
merge $<1 $<2 $@
makefile规则中没有$1
和$2
个自动变量,但是,$^
是所有先决条件的列表。由于规则只有两个先决条件,因此它会扩展为%.input1 %.input2
,或者更确切地说,扩展为$*.input1 $*.input2
。因此:
%.out: %.input1 %.input2
merge $^ $@
应该足够了。
IMO的 .SULFFIXES
并不是很有用,因为它使用的隐式规则定义无法查看和更改。
<强> [更新] 强>
关于doit
目标,为了防止每次您想要将规则命令更改为:
doit: project.out
# project.out merged
touch $@