1

I am creating Swift Packages from various Objective-C Frameworks (via use of XCFrameworks).

I successfully created the SPs, but have run into an issue when it comes to the other SP dependencies it relies on.

If I only add the WrapperPackage to my DemoApp, the compiler fails due to missing the SubDependencyPackage frameworks.
If I add the SubDependencyPackage via SPM to the DemoApp, it compiles just fine.

Is it possible / How can I...
properly bundle the "sub-dependencies" (SubDependencyPackage) into the Swift Package (WrapperPackage) so that in the DemoApp I only need to add WrapperPackage via SPM and all dependencies are resolved?

Workflow

  • DemoApp adds WrapperPackage as a SPM dependency.
  • WrapperPackage contains 2 XCFrameworks.
  • The 2 XCFrameworks were generated from 2 Objective-C Frameworks.
  • The Objective-C Frameworks have "sub-dependencies" of a separate Swift Package (SubDependencyPackage).
DemoApp
|
--WrapperPackage (XCFrameworks)
  |
  --SubDependencyPackage (XCFramework Dependencies)

WrapperPackage.swift

// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "WrapperPackage",
    platforms: [.iOS(.v13)],
    products: [
        .library(name: "ObjectiveCFramework1", targets: ["ObjectiveCFramework1"]),
        .library(name: "ObjectiveCFramework2", targets: ["ObjectiveCFramework2"]),
    ],
    dependencies: [
        .package(name: "SubDependencyPackage.git", url: "git@github.com:user/SubDependencyPackage.git", .branch("main")),
    ],
    targets: [
        .binaryTarget(name: "ObjectiveCFramework1", path: "XCFrameworks/ObjectiveCFramework1.xcframework"),
        .binaryTarget(name: "ObjectiveCFramework2", path: "XCFrameworks/ObjectiveCFramework2.xcframework"),
    ]
)
JimmyJammed
  • 9,598
  • 19
  • 79
  • 146

0 Answers0