Swift 3——通過[Swift Package Manager]來構建一個簡單的開發(fā)環(huán)境。

精彩高清視頻鏈接
泊學 是一個全棧工程師的自學網(wǎng)站 —— 泊學

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

創(chuàng)建一個Product

假設我們要創(chuàng)建一個最基本的平衡二叉樹,可以執(zhí)行下面這些命令:

mkdir BST
cd BST
swift package init --type=library

這樣,SPM就會為我們創(chuàng)建下面的目錄結構:


SPM demo
SPM demo

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

  • Swift通過Modules來管理代碼,默認情況下,所有在Sources目錄下的文件都在同一個module中(稍后我們也會看到多個module的情況);
  • 所有Sources目錄中的代碼和根目錄的Package.swift文件形成了一個Package;
  • 在一個Package里,我們可以定義一個或多個Target
  • Target可以是我們在一開始定義的library,它可以被其他的Swift module使用;也可以是一個executable,稍后,我們會看到它的用法;

創(chuàng)建第一個module

Sources根目錄中,所有源代碼默認都是在同一個module中的。我們先在BST.swift
中編寫一些示例代碼:

open class BST { 
    public init() { 
        print("New BST initialized.") 
    }
}
extension BST: CustomStringConvertible { 
    public var description: String { 
        return "BST" 
    }
}

它們當然還不是BST的正式實現(xiàn),我們在這里只是為了演示module的用法。然后,我們在Tests/BSTTests/BSTTests.swift里,添加一個演示用的測試用例:

class BSTTests: XCTestCase { 
    func testExample() { 
        XCTAssertEqual(BST().description, "BST") 
    }
}

因為我們實現(xiàn)的CustomStringConvertible只是簡單返回了字符串"BST",因此上面的比較應該是相等的。
完成之后,在項目根目錄執(zhí)行:swift build,我們就生成了一個Swift module:

SPM demo
SPM demo

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

SPM demo
SPM demo

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

創(chuàng)建多個module

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

  • BST:表示BST module,并且把之前創(chuàng)建的BST.swift移動到這里;
  • Application:表示我們要新添加的應用程序;在其中,添加一個main.swift;這是每一個應用程序都必須定義的文件;

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


SPM demo
SPM demo

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

import BST
let bst = BST()
print(bst)

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

SPM demo
SPM demo

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

let package = Package( 
    name: "BST", 
    targets: [ 
        Target(name: "Application", dependencies: ["BST"]) 
    ]
)

這樣,我們就創(chuàng)建了一個叫做Application的target,它依賴我們之前創(chuàng)建的BST module。完成后,重新執(zhí)行swift build,就可以看到成功了:

SPM demo
SPM demo

編譯好的兩個swift module在./build/debug目錄中,我們直接執(zhí)行Application
就可以看到結果了:

SPM demo
SPM demo

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容