Swift Application Plugin 為建置 Swift 應用程式提供工作、配置與慣例。

用法

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

建置變體

Swift Application Plugin 了解以下維度。請閱讀建置變體簡介以取得更多資訊。

建置類型 - 永遠是 debugrelease

建置類型控制著可偵錯性以及產生二進制檔案的最佳化。

  • 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 Application Plugin 預設工作圖

變體相依工作

Swift Application Plugin 根據應用程式組件的變體建立工作。請閱讀建置變體簡介以取得更多資訊。下圖顯示變體相依工作之間的關係。

swift application variant task graph
圖 2. Swift Application Plugin 變體相依工作圖
compileVariantSwift (例如 compileDebugSwiftcompileReleaseSwift) - SwiftCompile

相依於:所有為編譯貢獻原始碼檔案的工作 :: 使用選定的編譯器編譯 Swift 原始碼檔案。

linkVariant (例如 linkDebuglinkRelease) - LinkExecutable

相依於:所有為連結可執行檔貢獻的工作,包括來自透過專案相依性解析的專案的 linkVariantcreateVariant 工作 :: 使用選定的連結器從編譯後的物件檔案連結可執行檔。

installVariant (例如 installDebuginstallRelease) - InstallExecutable

相依於:linkVariant 和所有為可執行檔執行階段貢獻的工作,包括來自透過專案相依性解析的專案的 linkVariant 工作 :: 安裝可執行檔及其所有執行階段相依性,以便輕鬆執行。

assembleVariant (例如 assembleDebugassembleRelease) - 工作 (生命週期)

相依於:linkVariant :: 彙總組裝此應用程式特定變體的工作。

生命週期工作

Swift Application Plugin 將其某些工作附加到 Base Plugin 章節中記錄的標準生命週期工作 — Swift Application Plugin 會自動套用這些工作

assemble - 工作 (生命週期)

相依於:linkDebug :: 彙總工作,組裝專案中目前主機(如果存在)的應用程式偵錯變體。此工作由 Base Plugin 新增。

check - 工作 (生命週期)

彙總工作,執行驗證工作,例如執行測試。某些外掛程式會將它們自己的驗證工作新增至 check。例如,XCTest Plugin 會將工作附加到此生命週期工作以執行測試。此工作由 Base Plugin 新增。

build - 工作 (生命週期)

相依於:checkassemble :: 彙總工作,執行專案的完整建置。此工作由 Base Plugin 新增。

clean - 刪除

刪除建置目錄及其中的所有內容,即 layout.buildDirectory 專案屬性指定的路徑。此工作由 Base Plugin 新增。

相依性管理

如同 Swift Application Plugin 建立的工作,也會根據應用程式組件的變體建立多個配置。請閱讀建置變體簡介以取得更多資訊。下圖描述 Swift Application Plugin 新增的配置

swift application configurations
圖 3. Swift Application Plugin 配置
  • 白色配置是用戶應使用來宣告相依性的配置

  • 粉紅色配置,也稱為可取用配置,以 (C) 表示,是組件對程式庫執行時使用的配置

  • 藍色配置,也稱為可解析配置,以 (R) 表示,是組件內部的配置,供其自身使用

以下配置用於宣告相依性

implementation

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

mainVariantImplementation (例如 mainDebugImplementationmainReleaseImplementation) 擴展 implementation

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

下游消費者(依賴於應用程式組件)使用以下配置

variantRuntimeElements (例如 debugRuntimeElementsreleaseRuntimeElements) 擴展 `mainVariantImplementation

用於執行應用程式。此配置旨在供消費者使用,以檢索執行應用程式所需的所有元素。

應用程式本身使用以下配置

swiftCompileVariant (例如 swiftCompileDebugswiftCompileRelease) 擴展 mainVariantImplementation

用於編譯應用程式。此配置包含應用程式的編譯包含根目錄,因此在調用 Swift 編譯器編譯應用程式時使用。

nativeLinkVariant (例如 nativeLinkDebugnativeLinkRelease) 擴展 mainVariantImplementation

用於連結應用程式。此配置包含應用程式的程式庫,因此在調用 Swift 連結器連結應用程式時使用。

nativeRuntimeVariant (例如 nativeRuntimeDebugnativeRuntimeRelease) 擴展 mainVariantImplementation

用於執行應用程式。此配置包含應用程式的執行階段程式庫。

慣例

Swift Application Plugin 為來源和工作新增慣例,如下所示。

專案佈局

Swift Application Plugin 假設專案佈局如下所示。這些目錄都不需要存在或包含任何內容。Swift Application Plugin 將編譯找到的任何內容,並忽略任何遺失的內容。

src/main/swift

Swift 原始碼,副檔名為 .swift

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

compileVariantSwift 工作

Swift Application Plugin 為要建置的應用程式組件的每個變體新增一個 SwiftCompile 實例 (例如 compileDebugSwiftcompileReleaseSwift)。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。

compilerArgs

[]

debuggable

true

modules

configurations.swiftCompileVariant

macros

[]

objectFileDir

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

optimized

false 用於偵錯建置類型,否則為 true

source

application.swiftSource

targetPlatform

衍生自二進制檔案的 TargetMachine

toolChain

根據目標機器自動選取

Swift Application Plugin 為應用程式的每個變體新增一個 LinkExecutable 實例 - 例如 linkDebuglinkRelease。請閱讀建置變體簡介以取得更多資訊。以下顯示一些最常見的配置選項。

debuggable

true

libs

configurations.nativeLinkVariant

linkedFile

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

linkerArgs

[]

source

compileVariantSwift.objects

targetPlatform

衍生自二進制檔案的 TargetMachine

toolChain

根據目標機器自動選取

installVariant 工作

Swift Application Plugin 為測試組件的每個變體新增一個 InstallExecutable 實例 - 例如 installDebuginstallRelease。請閱讀建置變體簡介以取得更多資訊。無需在工作上配置任何屬性。