我有一个非递归的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
?
答案 0 :(得分:2)
不,没有。关键是你没有重建资源,你重建二进制文件。
你可以做的是构建一个只包含共享源的中间体.o然后在你的测试和二进制文件中使用它。