在macOS 項目中,使用 Swift Package Manager (SPM) 創建并集成本地庫的完整步驟。
-
創建一個macos應用程序,選擇 swift、oc、swiftui都可以。
-
創建好應用之后,開始創建SPM本地庫。
打開終端app,進入項目根目錄,逐次輸入一下命令:
// 創建本地庫目錄(名稱自定)
mkdir tools
cd tools
# 初始化 Swift 包(類型選擇 Library)
swift package init --type library
創建成功之后終端會輸出以下內容以及右側自動生成的內容:
-
進入剛才自動生成的Sources文件夾中,將abs文件夾刪掉(也可以不刪掉,我這邊刪掉是因為tools中需要管理更多的本地庫)
-
在Sources文件夾中,新建文件夾以及swift文件
注:自己編寫swift文件中的內容
5. 到這一步已經完成50%,重點是編寫Package文件內容
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.import PackageDescription
/*** name:Swift包的名稱;* defaultLocalization:資源的默認本地化;* platforms:支持的最低系統平臺的列表;* pkgConfig:用于C模塊的名稱。如果存在,Xcode將搜索.pc文件以獲取系統目標所需的其他標志;* providers:系統目標的程序包提供者;* products:此軟件包可讓客戶使用的產品列表;* dependencies:軟件包依賴項列表(可空,或需要其它外部依賴);* targets:屬于此軟件包的目標列表(源碼目錄、測試目錄);* swiftLanguageVersions:此軟件包兼容的Swift版本列表;* cLanguageStandard:用于此程序包中所有C目標的C語言標準;* cxxLanguageStandard:用于此程序包中所有C ++目標的C ++語言標準;通常我們需要的是:name、platforms、products、dependencies、targets*/let package = Package(name: "tools",platforms: [.macOS(.v14)],products: [.library(name: "MyLogger",targets: ["MyLogger"]),.library(name: "MyLocalLibrary",targets: ["MyLocalLibrary"]),],targets: [.target(name: "MyLogger"),.target(name: "MyLocalLibrary"),.testTarget(name: "toolsTests",dependencies: ["MyLogger", "MyLocalLibrary"]),]
)
此時,可以直接在創建的本地庫中運行單元測試,測試是否有報錯,有報錯需要解決。
-
創建好本地SPM和運行也正常測試,這時候主工程就需要使用本地SPM庫
直接將創建好的SPM庫往工程里面拖,注意選好選項。
7、想要使用剛才創建好的本地SPM本地庫,還需要將他們加入到工程中
到此,創建好的本地SPM庫就可以正常使用了。
public struct MyLogger {var DEBUG: Bool = false// 這里是 struct,所以按照 swift 的 struct 語法,可以不寫 init,// 但是,因為是封裝成 SPM 庫,需要對外暴露,// 所以 init 構造器不能默認不寫,一定需要有 public 構造器,否則外部無法初始化public init() {}public init(_ DEBUG: Bool) {self.DEBUG = DEBUG}public func log(_ msg: String) {if DEBUG {print("Logger\t\(msg)")}}
}
其他本地庫想使用tools
dependencies: [.package(path: "../Tools"),// 使用三方庫.package(url: "https://github.com/sparkle-project/Sparkle", from: "2.0.0"),],