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

在 Linux 平台上,使用 GNUClangLLVMFlangNVIDIASwift 編譯器支援。

MOLD

使用 mold 連結器。以下平台-編譯器組合支援此類型:

  • Linux:GNUClangLLVMFlangNVIDIA 編譯器。

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

SOLD

使用 sold 連結器。此類型僅在 Apple 平台上,使用 ClangAppleClang 編譯器時才受支援。

APPLE_CLASSIC

以傳統行為(即在 Xcode 15.0 之前)使用 Apple 連結器。此類型僅在 Apple 平台上,使用 GNUClangAppleClangSwift 編譯器時才受支援。

MSVC

使用 Microsoft 連結器。此類型僅在 Windows 平台上,使用 MSVC、具有類似 MSVC 前端的 ClangSwift 編譯器時才受支援。

此屬性在 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 屬性。