[CMake] preventing redundant compilations

Philip Lowman philip at yhbt.com
Wed Mar 18 20:04:05 EDT 2009


On Wed, Mar 18, 2009 at 7:05 PM, Alexander Neundorf <a.neundorf-work at gmx.net
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090318/e6c260be/attachment.htm>


More information about the CMake mailing list