Added in version 3.29.
Specify which linker will be used for the link step. The property value may use
generator expressions
.
Note
It is assumed that the linker specified is fully compatible with the default one the compiler would normally invoke. CMake will not do any option translation.
Linker types are case-sensitive and may only contain letters, numbers and underscores. Linker types defined in all uppercase are reserved for CMake's own built-in types. The pre-defined linker types are:
DEFAULT
This type corresponds to standard linking, essentially equivalent to the
LINKER_TYPE
target property not being set at all.
SYSTEM
Use the standard linker provided by the platform or toolchain. For example, this implies the Microsoft linker for all MSVC-compatible compilers. This type is supported for the following platform-compiler combinations:
Linux: GNU
, Clang
, LLVMFlang
, NVIDIA
, and Swift
compilers.
Apple platforms: AppleClang
, Clang
, GNU
, and Swift
compilers.
Windows: MSVC
, GNU
, Clang
, NVIDIA
, and Swift
compilers.
LLD
Use the LLVM
linker. This type is supported for the following
platform-compiler combinations:
Linux: GNU
, Clang
, LLVMFlang
, NVIDIA
, and Swift
compilers.
Apple platforms: Clang
, AppleClang
, and Swift
compilers.
Windows: GNU
, Clang
with MSVC-like front-end, Clang
with
GNU-like front-end, MSVC
, NVIDIA
with MSVC-like front-end,
and Swift
.
BFD
Use the GNU
linker. This type is supported for the following
platform-compiler combinations:
Linux: GNU
, Clang
, LLVMFlang
, and NVIDIA
compilers.
Windows: GNU
, Clang
with GNU-like front-end.
GOLD
Supported on Linux platform with GNU
, Clang
, LLVMFlang
,
NVIDIA
, and Swift
compilers.
MOLD
Use the mold linker. This type is supported on the following platform-compiler combinations:
Linux: GNU
, Clang
, LLVMFlang
, and NVIDIA
compilers.
Apple platforms: Clang
and AppleClang
compilers (acts as an
alias to the sold linker).
SOLD
Use the sold linker. This type is only supported on Apple platforms
with Clang
and AppleClang
compilers.
APPLE_CLASSIC
Use the Apple linker in the classic behavior (i.e. before Xcode 15.0
).
This type is only supported on Apple platforms with GNU
, Clang
,
AppleClang
, and Swift
compilers.
MSVC
Use the Microsoft linker. This type is only supported on the Windows
platform with MSVC
, Clang
with MSVC-like front-end, and Swift
compilers.
This property is not supported on Green Hills MULTI
and
Visual Studio 9 2008
generators.
The implementation details for the selected linker will be provided by the
CMAKE_<LANG>_USING_LINKER_<TYPE>
variable. For example:
add_library(lib1 SHARED ...)
set_property(TARGET lib1 PROPERTY LINKER_TYPE LLD)
This specifies that lib1
should use linker type LLD
for the link step.
The command line options that will be passed to the toolchain will be provided
by the CMAKE_<LANG>_USING_LINKER_LLD
variable.
Note that the linker would typically be set using CMAKE_LINKER_TYPE
for the whole build rather than setting the LINKER_TYPE
property on
individual targets.