New in version 3.24.

LINK_LIBRARIES supports the $<LINK_ONLY:...> generator expression.

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

CMake 3.24 and above prefer to support $<LINK_ONLY:...>, when used in 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 LINK_LIBRARIES content guarded by $<LINK_ONLY:...> even for non-linking usage requirements. The NEW behavior for this policy is to use the guarded content only for link dependencies.

This policy was introduced in CMake version 3.24. Use the cmake_policy() command to set this policy to OLD or NEW explicitly. Unlike many policies, CMake version 3.26.20230321-gdea7cbc does not warn when this policy is not set, and simply uses OLD behavior.


The OLD behavior of a policy is deprecated by definition and may be removed in a future version of CMake.