🦄

.xcworkspace と Swift PackageなプロジェクトにSPMでライブラリを導入する

2022/05/05に公開

概要

.xcworkspaceとSwift Packageで管理しているプロジェクトにSPMでライブラリを導入する方法について説明します。

.xcworkspaceとSwift Packageについてや導入方法などはこの後の記事で書きます。

プロジェクト構成

Eevee
├── EeveeProject
│   ├── Package.swift
│   ├── Sources
│   └── Tests/EeveePackageTests
├── EeveePackage
├── EeveeWorkspase.xcworkspace
└── Tools
    ├── Package.resolved
    └── package.swift

追加方法

今回はサンプルとしてNukeを追加してみます。
package.swiftは以下の様になっています。

package.swift
import PackageDescription

let package = Package(
    name: "EeveePackage",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "EeveePackage",
            targets: ["EeveePackage"])
    ],
    dependencies: [
        .package(url: "https://github.com/kean/Nuke.git",
            .exact("10.8.0")),
    ],
    targets: [
        .target(
            name: "EeveePackage",
            dependencies: [
                .target(name: "HogeTarget"),
                .product(name: "Nuke", package: "Nuke"),
            ])
        .testTarget(
            name: "EeveePackageTests",
            dependencies: ["EeveePackage"]),
    ]
)

まず、dependencies: []内に導入するライブラリのurlと導入したいバージョンを指定します。

package.swift
dependencies: [
    .package(url: "https://github.com/kean/Nuke.git",.exact("10.8.0")),
],

targets: []にある導入したい.targetの中で、
dependencies: []内に.productでライブラリを指定します。

package.swift
targets: [
    .target(
        name: "EeveePackage",
        dependencies: [
	    .target(name: "HogeTarget"),
	    .product(name: "Nuke", package: "Nuke"),
    ])
]

以上でSPMを用いてライブラリを導入することができます。

Discussion