summaryrefslogtreecommitdiff
path: root/share/cmake-3.17/Help/policy/CMP0023.rst
diff options
context:
space:
mode:
Diffstat (limited to 'share/cmake-3.17/Help/policy/CMP0023.rst')
-rw-r--r--share/cmake-3.17/Help/policy/CMP0023.rst35
1 files changed, 35 insertions, 0 deletions
diff --git a/share/cmake-3.17/Help/policy/CMP0023.rst b/share/cmake-3.17/Help/policy/CMP0023.rst
new file mode 100644
index 0000000..3c72c81
--- /dev/null
+++ b/share/cmake-3.17/Help/policy/CMP0023.rst
@@ -0,0 +1,35 @@
+CMP0023
+-------
+
+Plain and keyword :command:`target_link_libraries` signatures cannot be mixed.
+
+CMake 2.8.12 introduced the :command:`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
+:command:`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 :command:`target_link_libraries` for a single
+target.
+
+The ``OLD`` behavior for this policy is to allow keyword and plain
+:command:`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 :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt