请稍侯

使用 Swift Package Manager

30 March 2021

使用 Swift Package Manager

Swift Package Manager 是一个去中心化的源码管理工具。

创建一个基本的Swift package

mkdir SwiftGrabber
swift package init --type executable

生成 xcode project

在生成xcode project的过程当中,SPM 会检查Package.swift里定义的 dependencytargetproduct,将dependency引入project中;根据定义的targetproject里产生对应的target;根据定义的productproject里产生对应的product

两个注意点:

  • 对于target,需要在Sources文件夹里有对应的子文件夹,并且子文件夹里要有.swift文件,才会自动生成target
  • 如果文件夹里有main.swift,那这个targetxcode project里就会被转成Command Line Tool Target,如果一开始在init package时没有加上--type executable,但又希望它在xcode里面用Command Line Tool Target的设定,那就要手动加入main.swift到对应的文件夹。同样在Tests文件夹里也要相对的放上一个空白的xxxTests.swift文件。

Package.swift示例如下:

import PackageDescription

let package = Package(
    name: "SwiftGrabber",
    products: [ // products 要放在 dependencies 前面
        .library(name: "libGrabber", targets: ["libGrabber"]),
        .executable(name: "SwiftGrabber", targets: ["SwiftGrabber"])
    ],
    dependencies: [
        .package(url:"https://github.com/Alamofire/Alamofire", from:"5.4.1")
    ],
    targets: [
        .target(name: "SwiftGrabber",dependencies: ["libGrabber"]),
        .target(name: "libGrabber", dependencies: []),
        .testTarget(name: "SwiftGrabberTests", dependencies: ["SwiftGrabber"]),
    ]
)

生成xcodeproj 在项目的根目录下,执行脚本:

swift package generate-xcodeproj

参考:利用 Swift Package Manager 製作自動化開發者工具