List public interface libraries for a library.
This property contains the list of transitive link dependencies. When
the target is linked into another target using the
target_link_libraries() command, the libraries listed (and
recursively their link interface libraries) will be provided to the
other target also. This property is overridden by the
LINK_INTERFACE_LIBRARIES_<CONFIG> property if policy
OLD or unset.
The value of this property is used by the generators when constructing
the link rule for a dependent target. A dependent target's direct
link dependencies, specified by its
property, are linked first, followed by indirect dependencies from the
transitive closure of the direct dependencies'
INTERFACE_LINK_LIBRARIES properties. See policy
INTERFACE_LINK_LIBRARIES may use "generator expressions"
with the syntax
$<...>. See the
manual for available expressions. See the
manual for more on defining buildsystem properties.
A call to
target_link_libraries(<target> ...) may update this
<target> was not created in the same
directory as the call then
target_link_libraries() will wrap each
entry with the form
::@(directory-id);...;::@, where the
literal and the
(directory-id) is unspecified.
This tells the generators that the named libraries must be looked up in
the scope of the caller rather than in the scope in which the
<target> was created. Valid directory ids are stripped on export
INTERFACE_LINK_LIBRARIES adds transitive link dependencies for a
target's dependents. In advanced use cases, one may update the
direct link dependencies of a target's dependents by using the
INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target properties.
Creating Relocatable Packages¶
Note that it is not advisable to populate the
INTERFACE_LINK_LIBRARIES of a target with absolute paths to dependencies.
That would hard-code into installed packages the library file paths
for dependencies as found on the machine the package was made on.
See the Creating Relocatable Packages section of the
cmake-packages(7) manual for discussion of additional care
that must be taken when specifying usage requirements while creating
packages for redistribution.