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 -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers