[cmake-developers] INTERFACE_LINK_LIBRARIES property?

Brad King brad.king at kitware.com
Fri Jun 28 08:49:02 EDT 2013


On 06/28/2013 08:42 AM, Stephen Kelly wrote:
> However, it should be only:
> 
>  target_link_libraries(<target> <PRIVATE|PUBLIC|INTERFACE> <lib> ...
>                                [<PRIVATE|PUBLIC|INTERFACE> <lib> ...] ...])

Yes.

> I can change that so that all of the following are valid:
> 
>  tll(tgt PRIVATE a PUBLIC b INTERFACE c)
>  tll(tgt INTERFACE c PRIVATE a PUBLIC b)
>  tll(tgt INTERFACE c PUBLIC b PRIVATE a)
>  tll(tgt INTERFACE c PUBLIC b PRIVATE a PUBLIC d INTERFACE e)

Yes.  I think that will be the simplest to use.  Please be
sure that empty library lists in cases like

 tll(tgt PRIVATE a PUBLIC INTERFACE c)

work because they could come from

 tll(tgt PRIVATE a PUBLIC ${list_of_libs_maybe_empty} INTERFACE c)

> I believe 
> 
>  tll(tgt LINK_PRIVATE a LINK_PUBLIC b LINK_PRIVATE c)
> 
> is valid today. I can't think of a reason to want that

We considered such cases way back when first discussing that interface.
The use case is that there is an ordered implementation dependency on
"a;b;c" but only "b" should be in the link interface.

Thanks,
-Brad



More information about the cmake-developers mailing list