On Wed, Mar 18, 2009 at 7:05 PM, Alexander Neundorf <[email protected]
> wrote:

> On Wednesday 18 March 2009, Denis Scherbakov wrote:
> > You could do the following:
> >
> > ADD_LIBRARY(intermediate STATIC a.cpp)
> >
> > ADD_LIBRARY(foo b.cpp)
> > TARGET_LINK_LIBRARIES(foo intermediate)
> >
> > ADD_LIBRARY(bar c.cpp)
> > TARGET_LINK_LIBRARIES(bar intermediate)
>
> That's not portable if bar and foo are shared libraries.
> See it as a feature that cmake recognizes that these files have to be
> compiled
> separately for separate targets, since separate targets may have other
> compile flags etc, so may need different object files.
>

In theory the Makefile generator could be adapted to share object files
across targets provided all the compilation flags are the same.  This would
obviously take time and introduce additional complexity.  It would also be
of limited benefit since usually source files are not compiled in more than
one library or executable.

Also, in theory you could reuse object files compiled for a shared library
(with -fPIC) in static libraries (on certain platforms).  Since preprocessor
definitions usually always change per target when using shared libraries due
to export definitions, however, this would also be of limited benefit.

-- 
Philip Lowman
_______________________________________________
Powered by www.kitware.com

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

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to