I have created xcframework for.eg. MobileCoreFramework and distributed it through MobileCoreSPM, here is MobilecoreSPM package,
name: "MobileCoreSPM",
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "MobileCoreSPM",
targets: ["MobileCoreSPM","MobileCoreFramework"]),
],
dependencies: [
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "MobileCoreSPM",
dependencies: ["MobileCoreFramework"]),
.binaryTarget(name: "MobileCoreFramework", path: "Artifacts/MobileCoreFramework.xcframework"),
]
)
then created another XCframework i.e. BillpayFramework which depends on MobileCoreFramework, here when creating BillpayFramework, I used MobileCoreSPM as dependent package and used MobilecoreMethods inside Billpay class, which was working fine.
but when tried to distribute BillpayFramework through BillpaySPM, error is displayed like it x-product 'MobileCoreFramework' required by package 'billpaylib' target 'BillpaySPM' not found.
let package = Package(
name: "BillpaySPM",
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "BillpaySPM",
targets: ["BillpaySPM"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
.package(path: "/Users/com/Documents/POC/Try2/MobileCoreLib"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "BillpaySPM",
dependencies: ["BillpayFramework","MobileCoreFramework",
]),
.binaryTarget(name: "BillpayFramework", path: "Artifacts/BillpayFramework.xcframework"),
]
)
And I am trying all this in my machine locally, didnt host it in github yet, hence linked everything through localpath.
Error:
product 'MobileCoreFramework' required by package 'billpaylib' target 'BillpaySPM' not found. enter image description here
CodePudding user response:
you need to specify the name of the dependent library if it's not identical with package name:
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "BillpaySPM",
dependencies: [
"BillpayFramework",
.product(name: "MobileCoreFramework", package: "MobileCoreLib"),
]),
...