Swift Package Manger 在 Xcode 11 已經獲得很好的支持。git
那麼如何讓一個現有的 Framewrok 支持 Swift Package Manager 呢?本文以我本身的開源項目 HSStockChart 舉例說明。github
首先,在項目的目錄下(含.xcodeproj
文件的目錄)執行下面操做👇swift
swift package init --type library
複製代碼
這時候能夠看到這樣子的輸出:xcode
執行這個指令會在該目錄下生成 Swift Package Manger 所須要的目錄和相關文件。bash
咱們能夠看到該命令爲咱們生成了 Sources
和 Tests
的目錄,及其一些文件。可是我本來項目的代碼並非放在該目錄下的,我又不想把代碼挪到這些默認的目錄下,並且我也沒有配置測試的 Target,因此我直接把 Sources
和 Tests
都刪掉,在 Package.swift
中去指定個人代碼路徑。測試
這是我修改後的 Package.swift
:ui
import PackageDescription
let package = Package(
name: "HSStockChart",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "HSStockChart",
targets: ["HSStockChart"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "HSStockChart",
dependencies: [],
path: "HSStockChart")
]
)
複製代碼
注意這裏我在 .target
那裏添加了:this
path: "HSStockChart"
複製代碼
"HSStockChart"
即爲個人源碼路徑。還有把 testTarget
內容給去掉了url
咱們能夠新建一個項目,而後引入 HSStockChart 測試一下。spa