On Tuesday 29 January 2013, Stephen Kelly wrote:
...
> This INTERFACE_INCLUDE_DIRECTORIES case is not going to be the only time an
> upstream will want to add to its interface. In theory, any time they want
> to add a directory to the INTERFACE_INCLUDE_DIRECTORIES they would have to
> bump the compatibility number.
> 
> Also, just to shortcut a possible discussion point - this issue is
> independent of whether tll() adds includes or a new command is added. If a
> downstream is using a new command before the upstream adds
> INTERFACE_INCLUDE_DIRECTORIES, the exact same issue comes up. Just to be
> clear.

Are you sure ?
A new command could handle libraries, targets with all interfaces set and 
targets with only the link interface set differently, it could error out if a 
target without includes set is used, and require keywords to denote whether 
the target is supposed to be used only for linking or for linking and include 
dirs.
That way, to make it work with a target where the includes are not set, some 
keyword must be added by downstream to the command (which would be source 
compatible, since the new command does not exist yet), and if the include 
interface is added later on, it still would not be used since the keyword is 
present. If the keyword is removed, the full interface is used.

target_use_interfaces(Foo PRIVATE SomeTarget /lib/libblub.so LINK_ONLY 
AnotherTarget)

Or could a generator expression be used for that, something like:
target_use_interfaces(Foo PRIVATE SomeTarget /lib/libblub.so 
$<TARGET_PROPERTY:AnotherTarget,INTERFACE_LINK_LIBRARIES)

?

Alex
--

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

Reply via email to