我是新手。我有一个非常基本的Make问题并且徒劳地搜索过它。我对不同的先决条件有不同的论据。
a b:c d
prog -i c -j d -out1 a -out2 b
我知道$ +会列出所有preqs,但我如何提供参数。我可以在配方中重新输入b c和d,而不是使用自动变量,但是输入需要两次完成。可以建立一个模式规则,其中a和b可以分别链接到c和d但仍然如何提供参数?
百万谢谢
答案 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
有点奇怪,因为它可以使用目标(a
或b
)进行调用,它将完全相同的事情。这是完全合法的,但是虽然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)