在我的工作目錄中,我有一些名爲foo.c
,bar.c
,baz.c
的文件,每個文件都定義了一些方法。我有兩個文件叫a.c
和b.c
。每個程序都是使用foo.c
,bar.c
和baz.c
中的方法的單個程序。我編譯a
和b
下面的Makefile如何在一個規則中製作多個目標
TARGETS := a b
OBJS := foo.o bar.o baz.o
all: $(TARGETS)
a: a.o $(OBJS)
gcc $^ -o [email protected]
b: b.o $(OBJS)
gcc $^ -o [email protected]
%.o: %.c
gcc -c $< -o [email protected]
然而,rule a
和rule b
是類似的,如果我有一個名爲ç新節目,我必須寫一個又一個規則。
所以我可以在一個規則出頭的a
和b
這樣的:
$(TARGETS): $(OBJS) $(x.o)
gcc -c $^ -o [email protected]
感謝您的幫助。
當我嘗試這個方法,它不會鏈接'TARGET.o'。 – akawhy 2014-10-28 01:29:59
@akawhy感謝您指出。現在它應該工作。 – downhillFromHere 2014-10-28 11:11:06