[cmake-developers] Generator expressisons in target properties

Brad King brad.king at kitware.com
Wed Nov 7 08:09:37 EST 2012


On 11/07/2012 07:33 AM, Stephen Kelly wrote:
>> I think 2.8.11 will have to generate export files that provide both
>> old and new interfaces.
> 
> This is currently the case in my branch.

Good.

> The generator expression content is 
> created in FooTargets.cmake and the old-style information is still generated 
> in FooTargets-<Config>.cmake

One reason we split out the FooTargets-<Config>.cmake files is so that
multiple separate build trees could each build and install a different
configuration over top the same install prefix.  If the libraries are
named on a per-config basis then this can work.  The main FooTargets.cmake
just lists the targets to be defined, and the per-config files provide
the per-config information for whatever set of configurations happens
to be installed.  This capability must be preserved.  If that just means
generator expressions that cover all possible configurations are put
in the top FooTargets.cmake file, then great.

> So, I think using a union solves the problem of consuming and production, 

An upstream written for CMake 2.8.10 that uses tll and sets old link
interfaces is not aware of the 2.8.11 behavior.  When built with 2.8.11
the tll will populate the new interfaces.  The old interfaces will still
be populated too.  The union of these in a 2.8.11-built consumer will then
duplicate the link information where it was not previously.  This is a
change in behavior for projects that have not been modified at all.  This
is not acceptable, and we don't need to bring include_directories into
the picture to cause it.  Let's resolve this first and then worry about
the rest.

-Brad



More information about the cmake-developers mailing list