如何在Automake程序和测试目标之间重用对象?

时间:2015-02-26 16:20:34

标签: autotools automake libtool

我有一个非递归的Makefile.am,其中包含以下内容:

SHARED_SRCS = src/bar.cpp src/baz.cpp

bin_PROGRAMS = foo

foo_SOURCES = src/main.cpp $(SHARED_SRCS)
foo_CXXFLAGS = -I$(srcdir)/src $(SOME_CFLAGS)
foo_LDADD = $(SOME_LIBS)

check_PROGRAMS = test1 test2 test3
TESTS = test1 test2 test3

test1_SOURCES = tests/test1.cpp $(SHARED_SRCS)
test2_SOURCES = tests/test2.cpp $(SHARED_SRCS)
test3_SOURCES = tests/test3.cpp $(SHARED_SRCS)
test1_CXXFLAGS = $(foo_CXXFLAGS)
test2_CXXFLAGS = $(foo_CXXFLAGS)
test3_CXXFLAGS = $(foo_CXXFLAGS)
test1_LDADD = $(foo_LDADD)
test2_LDADD = $(foo_LDADD)
test3_LDADD = $(foo_LDADD)

但是,每个目标都会构建自己的SHARED_SRCS,即使共享相同的标记,也会构建4次。

有没有办法在不创建便利库的情况下构建它们,例如libbar.a或libtool' libbar.la

1 个答案:

答案 0 :(得分:2)

不,没有。关键是你没有重建资源,你重建二进制文件。

你可以做的是构建一个只包含共享源的中间体.o然后在你的测试和二进制文件中使用它。