CMP0166 ------- .. 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:: STANDARD_ADVICE.txt .. include:: DEPRECATED.txt