列出每个具有不同依赖关系的目标

时间:2015-08-21 17:26:39

标签: makefile shared-libraries

如何编写一个Makefile来创建.so目标列表,每个目标都有不同的.o依赖关系,而不单独写出每个.so规则?

我现在基本上写的是每条规则都单独写出来:

BUILD_SO=$(CC) -shared $(CPPFLAGS) -o $@ $? $(LDLIBS)

liba.so: foo.o bar.o epicfoo.o
    $(BUILD_SO)

libb.so: foo.o epicbar.o
    $(BUILD_SO)

libc.so: foobar.o
    $(BUILD_SO)

我想要的是能够在文件顶部定义变量,如:

LIBA = liba.so
LIBA_DEPENDS = foo.o bar.o epicfoo.o

LIBB = libb.so
LIBB_DEPENDS = foo.o epicbar.o

LIBC = libc.so
LIBC_DEPENDS = foobar.o

ALL_LIBS = $(LIBA) $(LIBB) $(LIBC)

并以某种方式运行它们通过一个通用规则来构建类似于%.o:%.c模式规则的目标,但更像是

%.so: <some list of .o names>

然后有一个名为libs的.PHONY规则,以便我可以调用:

make libs

并建立了所有的库。

0 个答案:

没有答案