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