[CMake] preventing redundant compilations
Alexander Neundorf
a.neundorf-work at gmx.net
Wed Mar 18 20:09:50 EDT 2009
On Thursday 19 March 2009, Philip Lowman wrote:
> 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.
Basically it would be the same as the so-called "convenience" libraries with
autotools.
I think there is a feature request for this somewhere in the bug tracker.
Alex
More information about the CMake
mailing list