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 linker。此類型支援以下平台-編譯器組合

  • Linux: GNUClangLLVMFlangNVIDIA 編譯器。

  • Apple 平台:ClangAppleClang 編譯器 (作為 sold linker 的別名)。

SOLD

使用 sold linker。此類型僅在具有 ClangAppleClang 編譯器的 Apple 平台上支援。

APPLE_CLASSIC

在經典行為中使用 Apple 連結器 (即在 Xcode 15.0 之前)。此類型僅在具有 GNUClangAppleClangSwift 編譯器的 Apple 平台上支援。

MSVC

使用 Microsoft 連結器。此類型僅在具有類似 MSVC 前端的 MSVCClangSwift 編譯器的 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 屬性。