historically I provided a module from source through SPM. I was asked to provide a pre-compiled version of that module to speed up consumer's build time. I am able to build a xcframework with custom tooling. I was thinking to distribute the binary framework from the same Package with a
I'd like to let app developers choose the library produce (AwesomeModuleFromSource vs AwesomeModuleFromBinary) but let them use the same module name
I imagined creating such a package manifest.
// swift-tools-version:5.7 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "AwesomePackage", defaultLocalization: "en", products: [ .library( name: "AwesomeModuleFromSource", targets: ["AwesomeModule"] ), .library( name: "ModuleFromBinary", targets: ["AwesomeModuleBinary"] ) ], dependencies: , targets: [ .binaryTarget(name: "AwesomeModuleBinary", url: "xxx", checksum: "xxx" ), .target( name: "AwesomeModule", dependencies:  ) ] )
However, SPM complains that the downloaded archive of binary target does not contain expected binary artifact named because the module name is AwesomeModule. Changing the
.target name would lead to a different module name when used from source
Is it possible to provide the same module from source and through a binaryTarget from the same package? How can I do that?