Swift Package Manager対応フレームワークをCarthageにも対応させる
Swift Package Managerについて
Swiftが標準で提供しているライブラリ管理ツール。SPMとも略される。
フレームワークを配布するには、Package.swift
にフレームワークの依存関係などを書いてSources/
にソースコードを置く。さらにそのディレクトリをgithubにあげる。公式README
- Project Directory
- Package.swift
- Sources/
- Tests/
Carthageについて
こちらも有名どころのライブラリ管理ツール。プロジェクトのビルドが早くなることから好む人も多いと思う。フレームワークを配布するには、まず プロジェクト名.xcodeproj
を置き、そのなかでフレームワークのSchemeのSharedにチェックを入れる。そして、それをgithubにあげる。
公式README
SPM → Carthageの問題
SPMはSources/
にソースコード置くだけで.xcodeproj
が存在しないためCarthage対応させることができない。
SPM → Carthageの解決
つまりはSPMのソースに対して.xcodeproj
を作れば良い。
SPMにはソースから.xcodeproj
を生成するコマンドが標準であるのでそれを使う。
$ swift package generate-xcodeproj
それからSchemeの設定をしてgithubにあげれば終わりです。
まとめ
自分はよくCarthageを使っていて、githubで使いたいフレームワークを見つけてもCarthage対応してないものを見つけては残念に思っていました。解決できないかなーと公式のREADMEを読んで今回の方法を思いつきました。
また、今回の方法を用いて人生で初めてOSSにプルリク作ってみました。 IdleHandsApps/IHKeyboardAvoiding#45
ちなみにCocoapodsに関しては知識がないので今回触れてません。m(__)m
参考
GitHub - apple/swift-package-manager: The Package Manager for the Swift Programming Language
GitHub - Carthage/Carthage: A simple, decentralized dependency manager for Cocoa