Xcode13.2から、拡張子.swiftpm
を持つSwift Packageファイルが使えるようになりました。
実態は、Package.swiftをラップしたパッケージファイルなのですが、これを開くとPackage.swiftに指定されたアプリケーションを実行できるXcodeの特別なワークスペースを開くことができます。
このSwift Packageファイルは次のようにSwiftPMプロジェクトのExampleとして扱うことができます。
Example.swiftpmから、同階層のSwiftPMプロジェクトを呼び出すには、Example.swiftpm/Package.swiftに、相対パス指定でdependenciesを登録する必要があります。
// swift-tools-version: 5.5
import PackageDescription
import AppleProductTypes
let package = Package(
name: "Example",
platforms: [
.iOS("15.2")
],
products: [
.iOSApplication(
name: "Example",
targets: ["AppModule"],
bundleIdentifier: "dev.noppe.DebugMenu.Example",
teamIdentifier: "XXXXXXXXX",
displayVersion: "1.0",
bundleVersion: "1",
iconAssetName: "AppIcon",
accentColorAssetName: "AccentColor",
supportedDeviceFamilies: [.phone],
supportedInterfaceOrientations: [.portrait]
)
],
dependencies: [
.package(name: "DebugMenu", path: "../") //ここ
],
targets: [
.executableTarget(
name: "AppModule",
dependencies: [
.productItem(name: "DebugMenu", package: "DebugMenu", condition: nil)
]
)
]
)
これで、Xcodeからはlocalとラベルのついたswiftpmとしてプロジェクトに取り込むことができました。
localパッケージはXcodeから編集することができるため、このような構成にしてExampleを元に開発することもできます。
謎のxmlなどが消えて、ピュアswiftな非常にシンプルなファイル構成になるのでぜひ試してみてください。
この構成はDebugMenuでも採用しています。
https://github.com/noppefoxwolf/DebugMenu
多分この構成にするとiPadのPlaygroundでも開けるようになるんじゃないかなぁ。