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