CMP0166ΒΆ
New in version 3.30.
TARGET_PROPERTY
evaluates link properties transitively over private
dependencies of static libraries.
In CMake 3.29 and below, the TARGET_PROPERTY
generator expression
evaluates properties INTERFACE_LINK_OPTIONS
,
INTERFACE_LINK_DIRECTORIES
, and INTERFACE_LINK_DEPENDS
as if they were Transitive Compile Properties rather than
Transitive Link Properties, even when policy CMP0099
is
set to NEW
. Private dependencies of static libraries, which appear in
their INTERFACE_LINK_LIBRARIES
guarded by 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 TARGET_PROPERTY
evaluates
properties INTERFACE_LINK_OPTIONS
,
INTERFACE_LINK_DIRECTORIES
, and INTERFACE_LINK_DEPENDS
as Transitive Link Properties such that private dependencies of static
libraries, which appear in their INTERFACE_LINK_LIBRARIES
guarded
by 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 TARGET_PROPERTY
to
evaluate properties INTERFACE_LINK_OPTIONS
,
INTERFACE_LINK_DIRECTORIES
, and INTERFACE_LINK_DEPENDS
as if they were Transitive Compile Properties by not following private
dependencies of static libraries. The NEW
behavior for this policy is
to evaluate them as Transitive Link Properties by following private
dependencies of static libraries.
This policy was introduced in CMake version 3.30.
It may be set by cmake_policy()
or cmake_minimum_required()
.
If it is not set, CMake does not warn, and uses OLD
behavior.
Note
The OLD
behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.