New in version 3.13.
List of options to use for the link step of shared library, module
and executable targets as well as the device link step. Targets that are static
libraries need to use the
STATIC_LIBRARY_OPTIONS target property.
These options are used for both normal linking and device linking
CMP0105). To control link options for normal and device
expressions can be used.
This property holds a semicolon-separated list of
options specified so far for its target. Use the
command to append more options.
This property is initialized by the
property when a target is created, and is used by the generators to set
the options for the compiler.
LINK_OPTIONS may use "generator expressions" with the
$<...>. See the
for available expressions. See the
for more on defining buildsystem properties.
This property must be used in preference to
Host And Device Specific Link Options¶
New in version 3.18: When a device link step is involved, which is controlled by
CUDA_RESOLVE_DEVICE_SYMBOLS properties and policy
the raw options will be delivered to the host and device link steps (wrapped in
-Xcompiler or equivalent for device link). Options wrapped with
$<DEVICE_LINK:...> generator expression will be used
only for the device link step. Options wrapped with
generator expression will be used only for the host link step.
The final set of options used for a target is constructed by accumulating options from the current target and the usage requirements of its dependencies. The set of options is de-duplicated to avoid repetition.
New in version 3.12: While beneficial for individual options, the de-duplication step can break
up option groups. For example,
-option A -option B becomes
-option A B. One may specify a group of options using shell-like
quoting along with a
SHELL: prefix. The
SHELL: prefix is dropped,
and the rest of the option string is parsed using the
UNIX_COMMAND mode. For example,
"SHELL:-option A" "SHELL:-option B" becomes
-option A -option B.
Handling Compiler Driver Differences¶
To pass options to the linker tool, each compiler driver has its own syntax.
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
-Xlinker -z -Xlinker defs for
LINKER: prefix can be specified as part of a
LINKER: prefix supports, as an alternative syntax, specification of
arguments using the
SHELL: prefix and space as separator. The previous
example then becomes
SHELL: prefix anywhere other than at the beginning of the
LINKER: prefix is not supported.