Currently you can create an OBJECT library using "add_library(<name> OBJECT <src>...)" this populates $<TARGET_OBJECTS:name> which can then later be used using something like "target_sources(name PUBLIC $<TARGET_OBJECTS:name>)". I am wondering if there is some reason that $<TARGET_OBJECTS:name> can't be populated when you create a shared or static library, for instance using "add_library(<name> SHARED <src>...)". Looking at the output the VS 2017 generators for "add_library(<name> OBJECT <src>...)" it seems to actually build a static library anyway. I suspect that all the <src> files are compiled to object files somewhere for both STATIC and SHARED libraries, if so would it not be possible to point $<TARGET_OBJECTS:name> as these object files?
The reason I ask is that we have a a bunch of source code that builds in about 100 projects. These projects have a normal hierarchical dependency tree. However when distributing we want to create larger libraries that are the combination of various subsets of the smaller ones. In automake these are called convenience libraries and I suspect they may have been the reason for CMake OBJECT in the first place. Given the current behaviour we have to build all the projects twice once in SHARED library form on once in OBJECT library form. If TARGET_OBJECTS was populated for SHARED libraries we would not need to build everything twice as we could build everything SHARED but still use TARGET_OBJECTS to build combination convenience libraries. Of course maybe there's already a way to do this without having to build twice which I don't know about. -- 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