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 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 INTERFACE_LINK_LIBRARIES
property will be processed and generated for the IMPORTED
target by default. A new option to the 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 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 target_link_libraries()
.
The OLD
behavior for this policy is to ignore the 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 3.19.0-rc3 warns when the policy is not set and uses OLD
behavior. Use the cmake_policy()
command to set it to OLD
or NEW
explicitly.
Note
The OLD
behavior of a policy is deprecated by definition
and may be removed in a future version of CMake.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/policy/CMP0022.html