在我的工作目录中,我有一些名为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