INTERFACE_LINK_LIBRARIES¶
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
or
LINK_INTERFACE_LIBRARIES_<CONFIG>
property if policy
CMP0022
is 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 LINK_LIBRARIES
target
property, are linked first, followed by indirect dependencies from the
transitive closure of the direct dependencies'
INTERFACE_LINK_LIBRARIES
properties. See policy CMP0022
.
Contents of INTERFACE_LINK_LIBRARIES
may use "generator expressions"
with the syntax $<...>
. See the cmake-generator-expressions(7)
manual for available expressions. See the cmake-buildsystem(7)
manual for more on defining buildsystem properties.
Note
A call to target_link_libraries(<target> ...)
may update this
property on <target>
. If <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 ::@
is
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
by the install(EXPORT)
and export()
commands.
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.