LINKER_TYPE

在 3.29 版本中添加。

指定链接步骤将使用的链接器。属性值可能使用 generator expressions

注意

假定指定的链接器与编译器通常调用的默认链接器完全兼容。CMake 不会进行任何选项转换。

链接器类型区分大小写,可能仅包含字母、数字和下划线。全部大写定义的链接器类型为 CMake 自带类型的保留类型。预定义的链接器类型是

DEFAULT

此类型对应于标准链接,基本上相当于未设置 LINKER_TYPE 目标属性。

SYSTEM

使用平台或工具链提供的标准链接器。例如,这对所有与 MSVC 兼容的编译器而言意味着 Microsoft 链接器。此类型支持以下平台和编译器的组合

  • Linux:GNUClangLLVMFlangNVIDIASwift 编译器。

  • Apple 平台:AppleClangClangGNUSwift 编译器。

  • Windows:MSVCGNUClangNVIDIASwift 编译器。

LLD

使用 LLVM 链接器。此类型支持以下平台和编译器的组合

  • Linux:GNUClangLLVMFlangNVIDIASwift 编译器。

  • Apple 平台:ClangAppleClangSwift 编译器。

  • Windows:GNU、带类似 MSVC 前端的 Clang、带类似 GNU 前端的 ClangMSVC、带类似 MSVC 前端的 NVIDIASwift

BFD

使用 GNU 链接器。此类型支持以下平台和编译器的组合

  • Linux:GNUClangLLVMFlangNVIDIA 编译器。

  • Windows:GNU、带类似 GNU 前端的 Clang

GOLD

支持搭载 GNUClangLLVMFlangNVIDIASwift 编译器的 Linux 平台。

MOLD

使用 mold 链接器。此类型受以下平台-编译器组合支持

  • Linux:GNUClangLLVMFlangNVIDIA 编译器。

  • Apple 平台:ClangAppleClang 编译器(作为 sold 链接器 的别名)。

SOLD

使用 sold 链接器。此类型仅受具有 ClangAppleClang 编译器的 Apple 平台支持。

APPLE_CLASSIC

在传统行为中使用 Apple 链接器(即 Xcode 15.0 之前)。此类型仅受具有 GNUClangAppleClangSwift 编译器的 Apple 平台支持。

MSVC

使用 Microsoft 链接器。此类型仅受具有 MSVC、类似 MSVC 前端的 ClangSwift 编译器的 Windows 平台支持。

此属性不受 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 属性。