Swift 應用程式外掛程式與設定快取不相容。

Swift 應用程式外掛程式提供建置 Swift 應用程式的任務、設定和慣例。

使用

build.gradle.kts
plugins {
    `swift-application`
}
build.gradle
plugins {
    id 'swift-application'
}

建置變異

Swift 應用程式外掛程式了解下列向度。請閱讀建置變異簡介以取得更多資訊。

建置類型 - 永遠是偵錯發布

建置類型控制產生的二進位檔的可偵錯性和最佳化。

  • debug - 產生偵錯符號,且不要最佳化二進位檔

  • release - 產生偵錯符號並最佳化,但從二進位檔中萃取偵錯符號

目標機器 - 預設為建置主機

目標機器表示應用程式預期執行的機器。目標機器透過其作業系統和架構來識別。Gradle 使用目標機器來決定根據主機機器的可用性選擇哪個工具鏈。

目標機器可以設定如下

build.gradle.kts
application {
    targetMachines = listOf(machines.linux.x86_64, machines.macOS.x86_64)
}
build.gradle
application {
    targetMachines = [
        machines.linux.x86_64, machines.macOS.x86_64
    ]
}

任務

下圖顯示此外掛程式所新增任務之間的關係。

swift application task graph
圖 1. Swift 應用程式外掛程式預設任務圖

變異相關任務

Swift 應用程式外掛程式會根據應用程式元件的變異來建立任務。請閱讀建置變異簡介以取得更多資訊。下圖顯示變異相關任務之間的關係。

swift application variant task graph
圖 2. Swift 應用程式外掛程式變異相關任務圖
compileVariantSwift(例如 compileDebugSwiftcompileReleaseSwift) - SwiftCompile

相依性:所有將原始檔提供給編譯的任務 :: 使用所選編譯器編譯 Swift 原始檔。

linkVariant(例如 linkDebuglinkRelease) - LinkExecutable

相依性:所有提供給連結可執行檔的任務,包括來自透過專案相依性解析的專案的 linkVariantcreateVariant 任務 :: 使用所選連結器從已編譯的物件檔連結可執行檔。

installVariant(例如 installDebuginstallRelease) - InstallExecutable

相依性:linkVariant 和所有提供給可執行檔執行期的任務,包括來自透過專案相依性解析的專案的 linkVariant 任務 :: 安裝可執行檔及其所有執行期相依性,以便輕鬆執行。

assembleVariant(例如 assembleDebugassembleRelease) - 任務(生命週期)

相依性:linkVariant :: 彙總組裝此應用程式特定變異的任務。

生命週期任務

Swift 應用程式外掛程式會將部分任務附加到 基本外掛程式章節 中記載的標準生命週期任務,而 Swift 應用程式外掛程式會自動套用這些任務

組建 - 任務(生命週期)

依賴:連結偵錯 :: 匯總任務,用於組建專案中目前主機(如果存在)的應用程式偵錯變體。此任務由 基本外掛程式 新增。

檢查 - 任務(生命週期)

匯總任務,用於執行驗證任務,例如執行測試。有些外掛程式會將自己的驗證任務新增到 檢查。例如,XCTest 外掛程式 會將任務附加到此生命週期任務以執行測試。此任務由 基本外掛程式 新增。

建置 - 任務(生命週期)

依賴:檢查組建 :: 匯總任務,用於執行專案的完整建置。此任務由 基本外掛程式 新增。

清除 - 刪除

刪除建置目錄及其中的所有內容,也就是專案屬性 layout.buildDirectory 指定的路徑。此任務由 基本外掛程式 新增。

相依性管理

就像 Swift 應用程式外掛程式建立的任務一樣,會根據應用程式元件的變體建立多重組態。請閱讀 建置變體簡介 以取得更多資訊。下圖說明 Swift 應用程式外掛程式新增的組態

swift application configurations
圖 3. Swift 應用程式外掛程式組態
  • 白色組態是使用者用來宣告相依性的組態

  • 粉紅色組態,也稱為可消耗組態,標示為 (C),是元件對應程式庫執行時使用的組態

  • 藍色組態,也稱為可解析組態,標示為 (R),是元件內部使用的組態

下列組態用於宣告相依性

實作

用於宣告主要元件所有變體的實作相依性。您應該在此宣告任何變體的相依性。

main變體實作(例如 mainDebug實作mainRelease實作)延伸 實作

用於宣告主要元件特定變體的實作相依性。您應該在此宣告特定變體的相依性。

下游消費者所使用的組態,取決於應用程式元件

變數RuntimeElements(例如 debugRuntimeElementsreleaseRuntimeElements) 延伸 `main變數Implementation

用於執行應用程式。此組態供消費者使用,以擷取執行應用程式所需的所有元素。

應用程式本身所使用的組態如下

swiftCompile變數(例如 swiftCompileDebugswiftCompileRelease)延伸 main變數Implementation

用於編譯應用程式。此組態包含應用程式的編譯包含根目錄,因此在呼叫 Swift 編譯器來編譯應用程式時會使用此組態。

nativeLink變數(例如 nativeLinkDebugnativeLinkRelease)延伸 main變數Implementation

用於連結應用程式。此組態包含應用程式的函式庫,因此在呼叫 Swift 連結器來連結應用程式時會使用此組態。

nativeRuntime變數(例如 nativeRuntimeDebugnativeRuntimeRelease)延伸 main變數Implementation

用於執行應用程式。此組態包含應用程式的執行時期函式庫。

慣例

Swift 應用程式外掛程式會新增來源和工作慣例,如下所示。

專案配置

Swift 應用程式外掛程式假設專案配置如下所示。這些目錄都不需要存在或包含任何內容。Swift 應用程式外掛程式會編譯它找到的任何內容,並忽略任何遺失的內容。

src/main/swift

Swift 來源,副檔名為 .swift

您可以透過在 application 腳本區塊中設定 source設定專案配置

compile變數Swift 工作

Swift 應用程式外掛程式會為應用程式元件的每個變數新增 SwiftCompile 執行個體,以進行建置(例如 compileDebugSwiftcompileReleaseSwift)。請閱讀 建置變數簡介 以取得更多資訊。以下是部分最常見的設定選項。

compilerArgs

[]

debuggable

true

modules

configurations.swiftCompile變數

巨集

[]

objectFileDir

layout.buildDirectory.dir("obj/main/$variant")

已最佳化

false 表示偵錯建置類型,否則為 true

來源

application.swiftSource

targetPlatform

從二進位檔的 TargetMachine 衍生而來

toolChain

根據目標機器自動選取

Swift 應用程式外掛程式會為應用程式的每個變異新增一個 LinkExecutable 實例,例如 linkDebuglinkRelease。請閱讀 建置變異簡介 以取得更多資訊。以下是部分最常見的設定選項。

debuggable

true

libs

configurations.nativeLinkVariant

linkedFile

layout.buildDirectory.dir("exe/main/$variant/module")

linkerArgs

[]

來源

compileVariantSwift.objects

targetPlatform

從二進位檔的 TargetMachine 衍生而來

toolChain

根據目標機器自動選取

installVariant 任務

Swift 應用程式外掛程式會為測試元件的每個變異新增一個 InstallExecutable 實例,例如 installDebuginstallRelease。請閱讀 建置變異簡介 以取得更多資訊。無需設定任務上的任何屬性。