[cmake-developers] Setting include directories via target_link_libraries() ?
Alexander Neundorf
neundorf at kde.org
Tue Dec 18 12:30:18 EST 2012
On Tuesday 18 December 2012, Stephen Kelly wrote:
> Alexander Neundorf wrote:
> > On Tuesday 18 December 2012, Stephen Kelly wrote:
> >> Alexander Neundorf wrote:
> >> > This would have the same effect, but people could simply hide the
> >> > USE_INTERFACES keyword in a variable:
> >> > set(Foo_LIBRARIES USE_INTERFACES Foo::FooLib)
> >> >
> >> > and then it's again hidden:
> >> > target_link_libraries(hello ${JPEG_LIBRARIES} ${Foo_LIBRARIES})
> >>
> >> I don't see why anyone would do that.
> >
> > A buildsystem maintainer might decide that he simply wants to provide the
> > normal Foo_LIBRARIES variable to its users, so they can simply continue
> > to use it as they always did, and don't have to care about the new cmake
> > features. I don't say whether that's a good or bad idea, but it's
> > possible and IMO not too far fetched.
>
> I'd certainly claim it's a bad idea :).
>
> The upstream buildsystem maintainer has no idea whether Foo should appear
> in the INTERFACE of targets that use it. It's a very bad idea.
I'm talking about a downstream buildsystem maintainer, of some application
with a handful of known developers.
He might write a FindFoo.cmake or create an ExternalProject for Foo, and he
might decide that he'll simply create a FOO_LIBRARIES variable, so "his"
developers don't have to care about imported targets.
But, actually we agree :-)
I just wanted to show that by using a keyword for tll() this is possible (but
would be a bad idea), and by using a separate command, this is not possible.
Alex
More information about the cmake-developers
mailing list