2
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、10行目で使用されているターゲットレシピに最適です。ただし、5行目で使用しているように、ターゲットルール自体でターゲット固有の変数「obj」を参照できる方法はありますか? あると思いますが、それを参照するにはブードゥー教のシンボルが必要です。この答えがどこにも見つからなかったなんて信じられません。前もって感謝します!

4

2 に答える 2

4

二次拡張を使用:

.SECONDEXPANSION:

foo bar: $$(obj)
    ...
于 2013-02-07T16:07:40.800 に答える
2

特定の変数をターゲットにするのではなく、前提条件が必要だと思います。

foo : foo.o
bar : bar.o

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

# use the default rule for .c to .o

$^すべての前提条件のリストに展開されることに注意してください。

于 2013-02-07T16:07:00.920 に答える