On 12/04/2015 03:05 PM, Bruce Stephens wrote:
Any suggestions on how to organise that? Presumably there are
lots of examples in (for example) KDE, but I'm not familiar enough
with that codebase to be able to find them easily.

Currently our GNU Make build builds static libraries in the subdirectories, then those are put into a big static library and that's linked into a shared
library. (The last step uses a shell script which knows how to do that for
various platforms.)

My first attempt uses add_library(... OBJECT ...) in the subdirectories,
then add_library(... SHARED $<TARGET_OBJECTS:...> $<TARGET_OBJECTS:...>)
to combine them.

That works, though it means repeating the same information (more or less) twice
since for each add_subdirectory() there'll be a $<TARGET_OBJECTS:>. Also
the dependent libraries need to be added in the top-level but they're triggered by the subdirectory (by the looks of it I can't use target_link_libraries() on an OBJECT library). It works, though, and didn't take me very long to do, and the result looks
clean and relatively easy to follow.

Any better ways to do this? (In the particular case I'm looking at, splitting the libraries and just having one per subdirectory might make sense, but not in all
cases.)

I would avoid creating these single use, per directory libraries entirely.

A single target can build sources located in any number of directories.

If you want to subdivide the source file listing of that one target for organizational purposes you can do so with e.g. include(), target_sources() and/or list variables.

Nils

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to