[cmake-developers] INTERFACE_LINK_LIBRARIES property?
Stephen Kelly
steveire at gmail.com
Fri Jun 28 06:02:47 EDT 2013
Brad King wrote:
> Okay, I think we've had some confusion due to differing assumptions
> about the meaning of "old" and "new" tll signatures. Let me be more
> explicit. For the signature policy, there are two groups of signatures:
>
> * Group A (what I called "old" signatures):
>
> target_link_libraries(lhs a b c)
> target_link_libraries(lhs LINK_INTERFACE_LIBRARIES a b c)
>
> * Group B (what I called "new" signatures):
>
> target_link_libraries(lhs LINK_PUBLIC a LINK_PRIVATE b LINK_INTERFACE c)
> target_link_libraries(lhs PUBLIC a PRIVATE b INTERFACE c)
Is it really worthwhile to introduce both INTERFACE and LINK_INTERFACE?
> The semantics of the two group B signatures are *identical*. There
> is absolutely ZERO distinction between PUBLIC and LINK_PUBLIC.
Ok. So,
* LINK_PUBLIC is treated as an alias for PUBLIC
* LINK_PRIVATE is treated as an alias for PRIVATE
* LINK_INTERFACE_LIBRARIES is *not* treated as an ALIAS for INTERFACE
Correct?
> I expected to see things like
>
> - else if(args[i] == "LINK_PUBLIC")
> + else if(args[i] == "PUBLIC" || args[i] == "LINK_PUBLIC")
That would mean mixtures like this would be allowed:
target_link_libraries(lhs LINK_PUBLIC a PRIVATE b)
Should they be?
> Now, the signature policy should have the following behavior:
>
> * OLD: Group A *and* group B can be used for one lhs
> * NEW: Group A *xor* group B can be used for one lhs
Right.
Thanks,
Steve.
More information about the cmake-developers
mailing list