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.