I've distribuited a package which require an external dependency.
This dependency is quite large (firebase) and I would allow using both the precompiled version (link) or the main project source code (link).
Is possible to specify into the Package.swift
two different sources of dependencies by setting a flags set into the main host project?
Or eventually, is there a way to accomplish this task with SPM?
Somethinbg like:
// 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(
...
dependencies: [
.package(
name: "Firebase",
url: "https://github.com/firebase/firebase-ios-sdk.git",
"9.3.0"..<"11.0.0"
),
.package(
name: "FirebaseXCFramework",
url: "https://github.com/akaffenberger/firebase-ios-sdk-xcframeworks",
"9.3.0"..<"11.0.0"
)
],
targets: [
.target(
name: "RealFlags",
dependencies: [],
path: "RealFlags/Sources/RealFlags/Classes",
),
#if FLAG_SET
.target(
name: "RealFlagsFirebase",
dependencies: [
"RealFlags",
.product(name: "FirebaseRemoteConfig", package: "FirebaseXCFramework"),
],
path: "RealFlagsFirebase/Sources"
),
#else
.target(
name: "RealFlagsFirebase",
dependencies: [
"RealFlags",
.product(name: "FirebaseRemoteConfig", package: "Firebase"),
],
path: "RealFlagsFirebase/Sources"
),
#endif
)