Help/policy/CMP0166.rst
.. versionadded:: 3.30
:genex:TARGET_PROPERTY evaluates link properties transitively over private
dependencies of static libraries.
In CMake 3.29 and below, the :genex:TARGET_PROPERTY generator expression
evaluates properties :prop_tgt:INTERFACE_LINK_OPTIONS,
:prop_tgt:INTERFACE_LINK_DIRECTORIES, and :prop_tgt:INTERFACE_LINK_DEPENDS
as if they were :ref:Transitive Compile Properties rather than
:ref:Transitive Link Properties, even when policy :policy:CMP0099 is
set to NEW. Private dependencies of static libraries, which appear in
their :prop_tgt:INTERFACE_LINK_LIBRARIES guarded by :genex:LINK_ONLY
generator expressions, are not followed. This is inconsistent with
evaluation of the same target properties during buildsystem generation.
CMake 3.30 and above prefer that :genex:TARGET_PROPERTY evaluates
properties :prop_tgt:INTERFACE_LINK_OPTIONS,
:prop_tgt:INTERFACE_LINK_DIRECTORIES, and :prop_tgt:INTERFACE_LINK_DEPENDS
as :ref:Transitive Link Properties such that private dependencies of static
libraries, which appear in their :prop_tgt:INTERFACE_LINK_LIBRARIES guarded
by :genex:LINK_ONLY generator expressions, are followed.
This policy provides compatibility for projects that have not been updated
to expect the new behavior.
The OLD behavior for this policy is for :genex:TARGET_PROPERTY to
evaluate properties :prop_tgt:INTERFACE_LINK_OPTIONS,
:prop_tgt:INTERFACE_LINK_DIRECTORIES, and :prop_tgt:INTERFACE_LINK_DEPENDS
as if they were :ref:Transitive Compile Properties by not following private
dependencies of static libraries. The NEW behavior for this policy is
to evaluate them as :ref:Transitive Link Properties by following private
dependencies of static libraries.
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.30 .. |WARNS_OR_DOES_NOT_WARN| replace:: does not warn .. include:: include/STANDARD_ADVICE.rst
.. include:: include/DEPRECATED.rst