mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-13 18:49:38 -06:00
Every policy's documentation has a paragraph on what version of CMake introduced it, how to set the policy, and whether CMake warns if the policy is not set. The wording of this paragraph has diverged across policies over time. Factor the paragraph out into a standard advice document included by every policy.
42 lines
2.0 KiB
ReStructuredText
42 lines
2.0 KiB
ReStructuredText
CMP0079
|
|
-------
|
|
|
|
.. versionadded:: 3.13
|
|
|
|
:command:`target_link_libraries` allows use with targets in other directories.
|
|
|
|
Prior to CMake 3.13 the :command:`target_link_libraries` command did not
|
|
accept targets not created in the calling directory as its first argument
|
|
for calls that update the :prop_tgt:`LINK_LIBRARIES` of the target itself.
|
|
It did accidentally accept targets from other directories on calls that
|
|
only update the :prop_tgt:`INTERFACE_LINK_LIBRARIES`, but would simply
|
|
add entries to the property as if the call were made in the original
|
|
directory. Thus link interface libraries specified this way were always
|
|
looked up by generators in the scope of the original target rather than
|
|
in the scope that called :command:`target_link_libraries`.
|
|
|
|
CMake 3.13 now allows the :command:`target_link_libraries` command to
|
|
be called from any directory to add link dependencies and link interface
|
|
libraries to targets created in other directories. The entries are added
|
|
to :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
using a special (internal) suffix to tell the generators to look up the
|
|
names in the calling scope rather than the scope that created the target.
|
|
|
|
This policy provides compatibility with projects that already use
|
|
:command:`target_link_libraries` with the ``INTERFACE`` keyword
|
|
on a target in another directory to add :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
entries to be looked up in the target's directory. Such projects should
|
|
be updated to be aware of the new scoping rules in that case.
|
|
|
|
The ``OLD`` behavior of this policy is to disallow
|
|
:command:`target_link_libraries` calls naming targets from another directory
|
|
except in the previously accidentally allowed case of using the ``INTERFACE``
|
|
keyword only. The ``NEW`` behavior of this policy is to allow all such
|
|
calls but use the new scoping rules.
|
|
|
|
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.13
|
|
.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
|
|
.. include:: STANDARD_ADVICE.txt
|
|
|
|
.. include:: DEPRECATED.txt
|