https://github.com/Kitware/CMake
Revision 72ab7645823777afb5a906ac08d1113ee24ac8bb authored by Brad King on 22 April 2014, 16:53:51 UTC, committed by Brad King on 22 April 2014, 16:53:51 UTC
2 parent s 2b7f70c + 149ce5d
Raw File
Tip revision: 72ab7645823777afb5a906ac08d1113ee24ac8bb authored by Brad King on 22 April 2014, 16:53:51 UTC
Merge branch 'osx-CFBundle-info-plist' into release
Tip revision: 72ab764
CMP0022.rst
CMP0022
-------

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.9 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
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 cmake_policy command to set it to OLD or NEW explicitly.
back to top