LINK_LIBRARIES¶
List of direct link dependencies.
This property specifies the list of libraries or targets which will be
used for linking. In addition to accepting values from the
target_link_libraries()
command, values may be set directly on
any target using the set_property()
command.
The value of this property is used by the generators to construct the
link rule for the target. The direct link dependencies are linked first,
followed by indirect dependencies from the transitive closure of the
direct dependencies' INTERFACE_LINK_LIBRARIES
properties.
See policy CMP0022
.
Contents of LINK_LIBRARIES
may use
generator expressions
with the
syntax $<...>
. Policy CMP0131
affects the behavior of the
LINK_ONLY
generator expression for this property.
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.
In advanced use cases, the list of direct link dependencies specified
by this property may be updated by usage requirements from dependencies.
See the INTERFACE_LINK_LIBRARIES_DIRECT
and
INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
target properties.
See the CMAKE_LINK_LIBRARIES_STRATEGY
variable and
corresponding LINK_LIBRARIES_STRATEGY
target property
for details on how CMake orders direct link dependencies on linker
command lines.
Handling Compiler Driver Differences¶
Added in version 3.32.
To pass options to the linker tool, each compiler driver has its own syntax.
The LINKER:
prefix and ,
separator can be used to specify, in a portable
way, options to pass to the linker tool. LINKER:
is replaced by the
appropriate driver option and ,
by the appropriate driver separator.
The driver prefix and driver separator are given by the values of the
CMAKE_<LANG>_LINKER_WRAPPER_FLAG
and
CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
variables.
For example, "LINKER:-z,defs"
becomes -Xlinker -z -Xlinker defs
for
Clang
and -Wl,-z,defs
for GNU GCC
.
The LINKER:
prefix supports, as an alternative syntax, specification of
arguments using the SHELL:
prefix and space as separator. The previous
example then becomes "LINKER:SHELL:-z defs"
.
Note
Specifying the SHELL:
prefix anywhere other than at the beginning of the
LINKER:
prefix is not supported.