summaryrefslogtreecommitdiff
path: root/share/cmake-3.17/Help/policy/CMP0022.rst
diff options
context:
space:
mode:
Diffstat (limited to 'share/cmake-3.17/Help/policy/CMP0022.rst')
-rw-r--r--share/cmake-3.17/Help/policy/CMP0022.rst39
1 files changed, 39 insertions, 0 deletions
diff --git a/share/cmake-3.17/Help/policy/CMP0022.rst b/share/cmake-3.17/Help/policy/CMP0022.rst
new file mode 100644
index 0000000..be60e37
--- /dev/null
+++ b/share/cmake-3.17/Help/policy/CMP0022.rst
@@ -0,0 +1,39 @@
+CMP0022
+-------
+
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` defines the link interface.
+
+CMake 2.8.11 constructed the 'link interface' of a target from
+properties matching ``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?``.
+The modern way to specify config-sensitive content is to use generator
+expressions and the ``IMPORTED_`` prefix makes uniform processing of the
+link interface with generator expressions impossible. The
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property was introduced as a
+replacement in CMake 2.8.12. This new property is named consistently
+with the ``INTERFACE_COMPILE_DEFINITIONS``, ``INTERFACE_INCLUDE_DIRECTORIES``
+and ``INTERFACE_COMPILE_OPTIONS`` properties. For in-build targets, CMake
+will use the INTERFACE_LINK_LIBRARIES property as the source of the
+link interface only if policy ``CMP0022`` is ``NEW``. When exporting a target
+which has this policy set to ``NEW``, only the :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+property will be processed and generated for the ``IMPORTED`` target by
+default. A new option to the :command:`install(EXPORT)` and export commands
+allows export of the old-style properties for compatibility with
+downstream users of CMake versions older than 2.8.12. The
+:command:`target_link_libraries` command will no longer populate the properties
+matching ``LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` if this policy is ``NEW``.
+
+Warning-free future-compatible code which works with CMake 2.8.7 onwards
+can be written by using the ``LINK_PRIVATE`` and ``LINK_PUBLIC`` keywords
+of :command:`target_link_libraries`.
+
+The ``OLD`` behavior for this policy is to ignore the
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` property for in-build targets.
+The ``NEW`` behavior for this policy is to use the ``INTERFACE_LINK_LIBRARIES``
+property for in-build targets, and ignore the old properties matching
+``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?``.
+
+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