Node: Libtool Convenience Libraries, Next: Libtool Modules, Previous: Conditional Libtool Sources, Up: A Shared Library
Sometimes you want to build libtool libraries which should not be installed. These are called libtool convenience libraries and are typically used to encapsulate many sublibraries, later gathered into one big installed library.
Libtool convenience libraries are declared by
noinst_LTLIBRARIES
, check_LTLIBRARIES
, or even
EXTRA_LTLIBRARIES
. Unlike installed libtool libraries they do
not need an -rpath
flag at link time (actually this is the only
difference).
Convenience libraries listed in noinst_LTLIBRARIES
are always
built. Those listed in check_LTLIBRARIES
are built only upon
make check
. Finally, libraries listed in
EXTRA_LTLIBRARIES
are never built explicitly: Automake outputs
rules to build them, but if the library does not appear as a Makefile
dependency anywhere it won't be built (this is why
EXTRA_LTLIBRARIES
is used for conditional compilation).
Here is a sample setup merging libtool convenience libraries from
subdirectories into one main libtop.la
library.
# -- Top-level Makefile.am -- SUBDIRS = sub1 sub2 ... lib_LTLIBRARIES = libtop.la libtop_la_SOURCES = libtop_la_LIBADD = \ sub1/libsub1.la \ sub2/libsub2.la \ ... # -- sub1/Makefile.am -- noinst_LTLIBRARIES = libsub1.la libsub1_la_SOURCES = ... # -- sub2/Makefile.am -- # showing nested convenience libraries SUBDIRS = sub2.1 sub2.2 ... noinst_LTLIBRARIES = libsub2.la libsub2_la_SOURCES = libsub2_la_LIBADD = \ sub21/libsub21.la \ sub22/libsub22.la \ ...