[cmake-developers] Setting include directories via target_link_libraries() ?
Stephen Kelly
steveire at gmail.com
Thu Dec 6 17:19:16 EST 2012
David Cole wrote:
> On Thu, Dec 6, 2012 at 3:37 PM, Stephen Kelly
> <steveire at gmail.com> wrote:
>
http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/3615/focus=5111
>>
>> I'm not sure what has changed since then.
>>
> What's changed since then is that we've seen how much change is needed for
> the feature. And how tangled it all is...
That's true. Well, a lot of change and complex, but not tangled.
I haven't tried to analyse how much of the complexity is due to whether
target_use_targets or target_link_libraries is used. I think the harder
parts of this topic so far have been related to exports. Like I said though,
I haven't analysed how much of the exports complexity comes from the use of
tll().
> This is going to be a venture which risks possibly breaking existing
> projects for the convenience of those who are starting from scratch.
>
> Since the risk on this one is high, we might want to reconsider whether it
> would be better to use a new command entirely as the front-end for this
> thing.
>
> I'm not sure I like the name "target_use_targets", but I think a new
> command, whatever it be named, is better than changing
> target_link_libraries substantially in a "." release.
I was going to suggest naming the version that contains this stuff to 2.10.
I don't know what has motivated similar version bumps in the past though.
> For 3.0, when we finally do go to a CMake 3.0 in the future, we could ask
> the question whether it's safe to combine the two commands, once they've
> both proven to work in practice.
That would only be more source-incompatibility and not a good idea imo.
2.8.10 : Use target_link_libraries()
2.8.12 : Use target_use_targets()
3.0.0 : Use target_link_libraries()
If tll() is not to be used for this when the feature first lands, and
target_use_targets (or another name) should be used instead, then the thing
to do in 3.0.0 (or earlier) is to deprecate tll().
Anyway, that's a bit of a sideline. We'd need to find out how much
complexity is a result of using the existing tll(), and how much source
incompatibility that risks creating. The only possible source compatibility
I know of so far is what Brad mentioned, but that might exist anyway:
Brad King wrote:
> Now even projects that have never touched LINK_INTERFACE_LIBRARIES will
> have to be fixed to manually set it to a copy of the link implementation
> in order to remain compatible with older CMake versions once they set the
> policy to NEW. I'm not currently sure whether this is okay.
Is that right?
Thanks,
Steve.
More information about the cmake-developers
mailing list