LINKER_TYPE¶
在版本 3.29 中添加。
指定链接步骤将使用的链接器。属性值可以使用生成器 表达式。
注意
假定指定的链接器与编译器通常调用的默认链接器完全兼容。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 链接器。此类型支持以下平台-编译器组合:
Linux:
GNU、Clang、LLVMFlang和NVIDIA编译器。Apple 平台:
Clang和AppleClang编译器(作为 sold 链接器的别名)。
SOLD使用 sold 链接器。此类型仅在 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 属性。