From 7d3d728a72c51fd4c0bdeaac9fd14ceae6730df3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 29 Apr 2024 16:31:38 -0400 Subject: Help: Clarify CMP0099 documentation and summary text --- Help/manual/cmake-policies.7.rst | 2 +- Help/policy/CMP0099.rst | 13 ++++++++----- Source/cmPolicies.h | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index e46e88e..dd202a2 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -214,7 +214,7 @@ Policies Introduced by CMake 3.17 CMP0102: mark_as_advanced() does nothing if a cache entry does not exist. CMP0101: target_compile_options honors BEFORE keyword in all scopes. CMP0100: Let AUTOMOC and AUTOUIC process .hh header files. - CMP0099: Link properties are transitive over private dependency on static libraries. + CMP0099: Link properties are transitive over private dependencies of static libraries. CMP0098: FindFLEX runs flex in CMAKE_CURRENT_BINARY_DIR when executing. Policies Introduced by CMake 3.16 diff --git a/Help/policy/CMP0099.rst b/Help/policy/CMP0099.rst index c0db99d..e836cf3 100644 --- a/Help/policy/CMP0099.rst +++ b/Help/policy/CMP0099.rst @@ -3,13 +3,16 @@ CMP0099 .. versionadded:: 3.17 -Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`, -:prop_tgt:`INTERFACE_LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DEPENDS` -are now transitive over private dependencies of static libraries. +Link properties are transitive over private dependencies of static libraries. -In CMake 3.16 and below the interface link properties attached to libraries -are not propagated for private dependencies of static libraries. +In CMake 3.16 and below, evaluation of target properties +:prop_tgt:`INTERFACE_LINK_OPTIONS`, :prop_tgt:`INTERFACE_LINK_DIRECTORIES`, +and :prop_tgt:`INTERFACE_LINK_DEPENDS` during buildsystem generation does not +follow private dependencies of static libraries, which appear in their +:prop_tgt:`INTERFACE_LINK_LIBRARIES` guarded by :genex:`LINK_ONLY` generator +expressions. Only the libraries themselves are propagated to link the dependent binary. + CMake 3.17 and later prefer to propagate all interface link properties. This policy provides compatibility for projects that have not been updated to expect the new behavior. diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index ada87dd..1aa5f79 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -294,8 +294,8 @@ class cmMakefile; "FindFLEX runs flex in CMAKE_CURRENT_BINARY_DIR when executing.", 3, \ 17, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0099, \ - "Link properties are transitive over private dependency on static " \ - "libraries.", \ + "Link properties are transitive over private dependencies of " \ + "static libraries.", \ 3, 17, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0100, "Let AUTOMOC and AUTOUIC process .hh files.", 3, \ 17, 0, cmPolicies::WARN) \ -- cgit v0.12