iOS 成长快线

让现有的 Framework 项目支持 Swift Packag

2020-03-19  本文已影响0人  hanson21

Swift Package Manger 在 Xcode 11 已经得到很好的支持。

那么如何让一个现有的 Framewrok 支持 Swift Package Manger 呢?本文以我自己的开源项目 HSStockChart 举例说明。

使用 swift package init

首先,在项目的目录下(含.xcodeproj文件的目录)执行下面操作👇

swift package init --type library

这时候可以看到这样子的输出:

image.png

执行这个指令会在该目录下生成 Swift Package Manger 所需要的目录和相关文件。

按需修改 Package.swift 及文件目录

我们可以看到该命令为我们生成了 SourcesTests 的目录,及其一些文件。但是我原本项目的代码并不是放在该目录下的,我又不想把代码挪到这些默认的目录下,而且我也没有配置测试的 Target,所以我直接把 SourcesTests 都删掉,在 Package.swift 中去指定我的代码路径。

这是我修改后的 Package.swift :

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 那里添加了:

path: "HSStockChart"

"HSStockChart" 即为我的源码路径。还有把 testTarget 内容给去掉了。

测试效果

我们可以新建一个项目,然后引入 HSStockChart 测试一下。

image.png image.png image.png image.png
上一篇下一篇

猜你喜欢

热点阅读