有没有办法在Makefile的规则中引用目标特定变量?

时间:2013-02-07 16:01:58

标签: makefile target

1 target foo : src = foo.c
2 target foo : obj = foo.o
3 target bar : src = bar.c
4 target bar : obj = bar.o

5 foo bar: obj   # problem - not recognizing obj!
6    @echo link ${bin}     
7    @gcc command to link ${obj}

8 foo.o bar.o
9    @echo compile ${src}
10   @gcc command to compile ${src}

因此,目标特定变量对于第6,7,9和6行中使用的目标配方是很好的。 10.但是,有没有一种方法可以像第5行一样在目标规则本身中引用目标特定变量“obj”?我在想,但我需要一些伏都教符号来引用它。无法相信我无法在任何地方找到这个答案。提前谢谢!

2 个答案:

答案 0 :(得分:3)

使用secondary expansion

.SECONDEXPANSION:

foo bar: $$(obj)
    ...

答案 1 :(得分:2)

我认为您需要先决条件,而不是针对特定变量:

foo : foo.o
bar : bar.o

foo bar :
    gcc -o $@ $^ ${LDFLAGS } ${LDLIBS}

# use the default rule for .c to .o

请注意,$^会扩展到所有先决条件的列表。