2015-02-26 2 views
0

J'ai un Makefile.am non récurrent avec quelque chose comme ce qui suit:Comment réutiliser des objets entre le programme Automake et les cibles de tests?

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) 

Cependant, chaque cible construit son propre SHARED_SRCS, se faire construire 4 fois, même quand on partage les mêmes drapeaux.

Y a-t-il un moyen de les construire sans créer de bibliothèque de commodité, par ex. libbar.a ou libbar.la de libtool?

Répondre

2

Non, il n'y en a pas. Le fait est que vous ne reconstruisez pas les sources, vous reconstruisez des binaires.

Ce que vous pouvez faire est de construire un .o intermédiaire composé uniquement des sources partagées, puis l'utiliser dans vos tests, et les binaires.