LINKER_TYPE¶
版本 3.29 中新增。
指定链接步骤将要使用的链接器。属性值可以使用 generator expressions
。
注意
假定指定的链接器与编译器通常调用的默认链接器完全兼容。CMake 不会进行任何选项转换。
链接器类型区分大小写,并且只能包含字母、数字和下划线。以全大写字母定义的链接器类型为 CMake 自己的内置类型保留。预定义的链接器类型有
DEFAULT
此类型对应于标准链接,本质上等同于根本没有设置
LINKER_TYPE
目标属性。SYSTEM
使用平台或工具链提供的标准链接器。例如,这意味着所有与 MSVC 兼容的编译器的 Microsoft 链接器。以下平台-编译器组合支持此类型
Linux:
GNU
,Clang
,LLVMFlang
,NVIDIA
, 和Swift
编译器。Apple 平台:
AppleClang
,Clang
,GNU
, 和Swift
编译器。Windows:
MSVC
,GNU
,Clang
,NVIDIA
, 和Swift
编译器。
LLD
使用
LLVM
链接器。以下平台-编译器组合支持此类型Linux:
GNU
,Clang
,LLVMFlang
,NVIDIA
, 和Swift
编译器。Apple 平台:
Clang
,AppleClang
, 和Swift
编译器。Windows:
GNU
, 具有类似 MSVC 前端的Clang
, 具有类似 GNU 前端的Clang
,MSVC
, 具有类似 MSVC 前端的NVIDIA
, 和Swift
。
BFD
使用
GNU
链接器。以下平台-编译器组合支持此类型Linux:
GNU
,Clang
,LLVMFlang
, 和NVIDIA
编译器。Windows:
GNU
, 具有类似 GNU 前端的Clang
。
GOLD
在 Linux 平台上,
GNU
,Clang
,LLVMFlang
,NVIDIA
, 和Swift
编译器支持此类型。MOLD
使用 mold linker。以下平台-编译器组合支持此类型
Linux:
GNU
,Clang
,LLVMFlang
, 和NVIDIA
编译器。Apple 平台:
Clang
和AppleClang
编译器(充当 sold linker 的别名)。
SOLD
使用 sold linker。只有 Apple 平台上,
Clang
和AppleClang
编译器支持此类型。APPLE_CLASSIC
在经典行为中使用 Apple 链接器(即在
Xcode 15.0
之前)。只有 Apple 平台上,GNU
,Clang
,AppleClang
, 和Swift
编译器支持此类型。MSVC
使用 Microsoft 链接器。只有 Windows 平台上,
MSVC
, 具有类似 MSVC 前端的Clang
, 和Swift
编译器支持此类型。
此属性在 Green Hills MULTI
生成器上不受支持。
所选链接器的实现细节将由 CMAKE_<LANG>_USING_LINKER_<TYPE>
变量提供。例如
add_library(lib1 SHARED ...)
set_property(TARGET lib1 PROPERTY LINKER_TYPE LLD)
这指定 lib1
应该为链接步骤使用链接器类型 LLD
。将传递给工具链的命令行选项将由 CMAKE_<LANG>_USING_LINKER_LLD
变量提供。
请注意,链接器通常会使用 CMAKE_LINKER_TYPE
为整个构建设置,而不是在单个目标上设置 LINKER_TYPE
属性。