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
