當前位置:編程學習大全網 - 編程語言 - 如何通過Swift Package Manager 來構建壹個簡單的開發環境

如何通過Swift Package Manager 來構建壹個簡單的開發環境

我們看看如何通過Swift Package Manager(以下簡稱SPM)來構建壹個簡單的開發環境。

創建壹個Product

假設我們要創建壹個最基本的平衡二叉樹,可以執行下面這些命令:

mkdir BST

cd BST

swift package init --type=library

這樣,SPM就會為我們創建下面的目錄結構:

在這個目錄結構裏,我們可以了解以下內容:

Swift通過Modules來管理代碼,默認情況下,所有在Sources目錄下的文件都在同壹個module中(稍後我們也會看到多個module的情況);

所有Sources目錄中的代碼和根目錄的Package.swift文件形成了壹個Package;

在壹個Package裏,我們可以定義壹個或多個Target;

Target可以是我們在壹開始定義的library,它可以被其他的Swift module使用;也可以是壹個executable,稍後,我們會看到它的用法;

創建第壹個module

在Sources根目錄中,所有源代碼默認都是在同壹個module中的。我們先在BST.swift

中編寫壹些示例代碼:

open class BST {

public init() {

print("New BST initialized.")

}

}

extension BST: CustomStringConvertible {

public var description: String {

return "BST"

}

}

它們當然還不是BST的正式實現,我們在這裏只是為了演示module的用法。然後,我們在Tests/BSTTests/BSTTests.swift裏,添加壹個演示用的測試用例:

class BSTTests: XCTestCase {

func testExample() {

XCTAssertEqual(BST().description, "BST")

}

}

因為我們實現的CustomStringConvertible只是簡單返回了字符串"BST",因此上面的比較應該是相等的。

完成之後,在項目根目錄執行:swift build,我們就生成了壹個Swift module:

執行swift test,SPM就會幫我們完成之前定義的測試用例:

從上面的結果可以看到,所有測試都通過了。不過,我們創建library,最終還是為了提供給應用程序使用的。因此,接下來,我們就來了解如何給package添加壹個可執行程序,我們把它定義在壹個新的module中。

創建多個module

默認情況下,Sources目錄中所有代碼都是在同壹個module中的。因此,要創建多個module,我們要在Sources目錄中創建多個子目錄,像這樣:

BST:表示BST module,並且把之前創建的BST.swift移動到這裏;

Application:表示我們要新添加的應用程序;在其中,添加壹個main.swift;這是每壹個應用程序都必須定義的文件;

最終,我們的目錄看起來是這樣的:

然後,在main.swift中,添加下面的代碼:

import BST

let bst = BST()

print(bst)

重新執行swift build,我們會得到下面的錯誤:

顯然,盡管我們使用了import BST,SPM在生成Application module的時候,並不知道它和BST之間存在依賴關系。為了解決這個問題,我們需要在Package.swift中,添加必要的依賴關系:

let package = Package(

name: "BST",

targets: [

Target(name: "Application", dependencies: ["BST"])

]

)

這樣,我們就創建了壹個叫做Application的target,它依賴我們之前創建的BST module。完成後,重新執行swift build,就可以看到成功了:

編譯好的兩個swift module在./build/debug目錄中,我們直接執行Application

  • 上一篇:莫爾斯電碼裏,用莫爾斯電碼表白?
  • 下一篇:我不想抄我的另壹個地方天地500字。
  • copyright 2024編程學習大全網