[CMake] Building a "mega" library after building smaller component libraries?

Clifford Yapp cliffyapp at gmail.com
Mon Dec 13 18:13:04 EST 2010


Can anyone tell me what the best way is (without a whole lot of
rebuilding) to take several individual libraries and combine them into
a single large library?

In our autotools Makefile.am, we have the following:

libbrlcad_la_SOURCES =
libbrlcad_la_LDFLAGS = -version-info 19:1
libbrlcad_la_LIBADD = libbrlcad_nil.la

libbrlcad_nil_la_SOURCES =
libbrlcad_nil_la_LIBADD = \
        $(top_builddir)/src/libbu/libbu_nil.la \
        $(top_builddir)/src/libbn/libbn_nil.la \
        $(top_builddir)/src/librt/librt_nil.la \
        $(top_builddir)/src/libwdb/libwdb_nil.la \
        $(top_builddir)/src/libged/libged_nil.la

If I'm not mistaken, this appears to build static and dynamic
libbrlcad.a/libbrlcad.dylib/libbrlcad.so/etc. libraries using the
already built libbu, libbn, etc. libraries, without recompiling
anything.

I have successfully built all of the component libraries using CMake
both STATIC and SHARED, but I am a bit puzzled as to how to combine
them all into the monster library.  I can't define an add_library
target without source files - is there some other way to approach
this?  The arguments against reusing object files don't come into it
here, since the whole point is to combine what was already built into
a single large library.

Sorry if the question is basic but I may not even be using the right
terminology to search for what I want to do here.  Thanks for any
help.

CY


More information about the CMake mailing list