有一个耗时的步骤来展平一堆文件。
基本上我希望这是有效的语法
%.out: %.input1 %.input2
merge $<1 $<2 $@
doit: project.out
# project.out merged
Run Code Online (Sandbox Code Playgroud)
我远非 makefile 专家,但我喜欢使用 .SULFFIXS 来做到这一点,当只有两个文件时,将其适应两个输入或两个输出以备将来使用会很棒......
.SULFFIX: .in.out
.in.out:
dosomething $< $@
doit: project.out
Run Code Online (Sandbox Code Playgroud)
GNU 制作 3.81
我发现了一些关于如何制定具有多个输出的规则的讨论,但没有一个具有多个输入的讨论。
%.out: %.input1 %.input2
merge $<1 $<2 $@
Run Code Online (Sandbox Code Playgroud)
makefile 规则中没有$1和$2自动变量,但是,有$^所有先决条件的列表。由于该规则只有两个先决条件,因此它扩展为%.input1 %.input2,或者更准确地说,扩展为$*.input1 $*.input2。因此:
%.out: %.input1 %.input2
merge $^ $@
Run Code Online (Sandbox Code Playgroud)
应该够了。
.SULFFIXES,IMO,不是很有用,因为它使用了人们无法看到和更改的隐式规则定义。
[更新]
关于doit目标,为了防止它在每次您可能想要将规则命令更改为:
doit: project.out
# project.out merged
touch $@
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |