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 4.0.
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.