summaryrefslogtreecommitdiff
path: root/Help/policy/CMP0131.rst
blob: e85b8abda2f917c8408be62abf8ff2364b586fda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CMP0131
-------

.. versionadded:: 3.24

:prop_tgt:`LINK_LIBRARIES` supports the :genex:`$<LINK_ONLY:...>`
generator expression.

CMake 3.23 and below documented the :genex:`$<LINK_ONLY:...>` generator
expression only for use in :prop_tgt:`INTERFACE_LINK_LIBRARIES`.
When used in :prop_tgt:`LINK_LIBRARIES`, the content guarded inside
:genex:`$<LINK_ONLY:...>` was always used, even when collecting non-linking
usage requirements such as :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`.

CMake 3.24 and above prefer to support :genex:`$<LINK_ONLY:...>`, when
used in :prop_tgt:`LINK_LIBRARIES`, by using the guarded content only
for link dependencies and not other usage requirements.  This policy
provides compatibility for projects that have not been updated to
account for this change.

The ``OLD`` behavior for this policy is to use :prop_tgt:`LINK_LIBRARIES`
content guarded by :genex:`$<LINK_ONLY:...>` even for non-linking
usage requirements.  The ``NEW`` behavior for this policy is to to use
the guarded content only for link dependencies.

This policy was introduced in CMake version 3.24.  Use the
:command:`cmake_policy` command to set this policy to ``OLD`` or ``NEW``
explicitly.  Unlike many policies, CMake version |release| does *not*
warn when this policy is not set, and simply uses ``OLD`` behavior.

.. include:: DEPRECATED.txt