1234567891011121314151617181920212223242526272829303132333435 |
- CMP0023
- -------
- Plain and keyword target_link_libraries signatures cannot be mixed.
- CMake 2.8.12 introduced the target_link_libraries signature using the
- PUBLIC, PRIVATE, and INTERFACE keywords to generalize the LINK_PUBLIC
- and LINK_PRIVATE keywords introduced in CMake 2.8.7. Use of
- signatures with any of these keywords sets the link interface of a
- target explicitly, even if empty. This produces confusing behavior
- when used in combination with the historical behavior of the plain
- target_link_libraries signature. For example, consider the code:
- ::
- target_link_libraries(mylib A)
- target_link_libraries(mylib PRIVATE B)
- After the first line the link interface has not been set explicitly so
- CMake would use the link implementation, A, as the link interface.
- However, the second line sets the link interface to empty. In order
- to avoid this subtle behavior CMake now prefers to disallow mixing the
- plain and keyword signatures of target_link_libraries for a single
- target.
- The OLD behavior for this policy is to allow keyword and plain
- target_link_libraries signatures to be mixed. The NEW behavior for
- this policy is to not to allow mixing of the keyword and plain
- signatures.
- This policy was introduced in CMake version 2.8.12. CMake version
- |release| warns when the policy is not set and uses OLD behavior. Use
- the cmake_policy command to set it to OLD or NEW explicitly.
- .. include:: DEPRECATED.txt
|