- 論壇徽章:
- 0
|
標(biāo)題可能描述的不清楚,不知道該怎么表達(dá)
比如, 我有3 個(gè)文件: error.o foo.c bar.c
需要編譯成foo, bar兩個(gè)可執(zhí)行文件, 依賴關(guān)系分別是
foo: foo.c error.o
bar: bar.c error.o
foo 和 bar 都獨(dú)立,沒(méi)有任何相關(guān)性,
error.o 中有一個(gè)出錯(cuò)處理函數(shù),比如wraperr(),在foo.c 和 bar.c 中都調(diào)用了該函數(shù)
如果用個(gè)比較簡(jiǎn)單的makefile,可以這么寫(xiě):
PROGS = foo bar
all : ${PROGS}
foo: foo.o
gcc $< error.o -o $@
foo.o: foo.c
gcc -c $<
bar: bar.o
gcc $< error.o -o $@
bar.o: bar.c
gcc -c $< |
|
但是,現(xiàn)在有很多像foo bar這樣的目標(biāo), 該怎么寫(xiě):
如果這樣寫(xiě):
PROGS = foo bar
all : ${PROGS}
%: %.o
gcc $< error.o -o $@
%.o: %.c
gcc -c $< |
|
make 時(shí):
--------------------------------------------------------------
cc foo.c -o foo
/tmp/ccgRzkXg.o: In function `main':
foo.c:(.text+0x40): undefined reference to `wraperr'
collect2: ld returned 1 exit status
make: *** [foo] Error 1
--------------------------------------------------------------
希望有對(duì)make熟悉的能指點(diǎn)一下 |
|