makefile,多输入规则

时间:2012-03-29 22:44:30

标签: makefile gnu-make

有一个耗时的步骤,可以压扁一堆文件。

基本上我希望这是有效的语法

%.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

我已经找到了几个关于如何使用具有多个输出的规则的讨论,但没有一个具有多个输入。

1 个答案:

答案 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 $@