为先决条件

时间:2016-04-14 13:10:03

标签: makefile arguments

我是新手。我有一个非常基本的Make问题并且徒劳地搜索过它。我对不同的先决条件有不同的论据。

a b:c d
        prog -i c -j d -out1 a -out2 b

我知道$ +会列出所有preqs,但我如何提供参数。我可以在配方中重新输入b c和d,而不是使用自动变量,但是输入需要两次完成。可以建立一个模式规则,其中a和b可以分别链接到c和d但仍然如何提供参数?

百万谢谢

1 个答案:

答案 0 :(得分:0)

让我们先尝试一些更简单的规则:

a b c:
    @echo the target is $@

(用&#34测试;制作"或"制作b c"。)

a: c d
    @echo the prerequisites are $^
    @echo the first prerequisite is $<

a: c d
    @echo the second prerequisite is $(word 2,$^)

(原油但有效。)

你的规则:

a b : c d
    prog -i c -j d -out1 a -out2 b

有点奇怪,因为它可以使用目标(ab)进行调用,它将完全相同的事情。这是完全合法的,但是虽然Make可以使用$@访问目标名称,但它无法轻松扫描不是尝试构建的目标的名称。但是有一种方法可以减少冗余输入:

TARG_1 := a
TARG_2 := b
TARGS := $(TARG_1) $(TARG_2)

$(TARGS) : c d
    prog -i $< -j $(word 2,$^) -out1 $(TARG_1) -out2 $(TARG_2)