Estoy usando Swift Package Manager para modularizar una gran aplicación mixta de Objective-C y Swift iOS. La aplicación también usa CocoaPods para algunas dependencias para las que no hay un paquete Swift.
La estructura de mi proyecto es la siguiente:
ios/ MyApp/ ... CorePackage/ Sources/ Core/ ...Swift stuff goes here CoreObjC/ ... Obj-C stuff goes here
Creé el siguiente Package.swift para mi CorePackage. Tenga en cuenta que estoy tratando de usar un paquete Swift de lenguaje Swift en un paquete Swift de lenguaje Objective-C:
let package = Package( name: "CorePackage", products: [ .library(name: "Core", targets: ["Core", "CoreObjC"]), ], dependencies: [ ... ], targets: [ .target( name: "Core", dependencies: [ ... ], path: "Sources/Core" ), .target( name: "CoreObjC", dependencies: [ "Core", ... ], path: "Sources/CoreObjC", publicHeadersPath: "include" ) ] )
El siguiente comando de compilación funciona correctamente cuando se ejecuta en el directorio MyApp/CorePackage:
> xcodebuild -scheme "Core" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' build
He agregado el paquete "Core" a mis marcos, bibliotecas y configuración general de destino de contenido incrustado.
Ahora, cuando intento crear el objetivo de la aplicación desde el directorio ios:
> xcodebuild -scheme "MyApp" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' -workspace MyApp.xcworkspace build
Obtuve el siguiente error:
/.../ios/MyApp/CorePackage/Sources/CoreObjC/include/HeaderA.h:13:9: error: module 'Core' not found @import Core; ... /.../ios/MyApp/HeaderB.h:11:9: note: while building module 'CoreObjC' imported from /.../ios/MyApp/HeaderB.h:11: @import CoreObjC;
No he tenido problemas al usar paquetes con un solo objetivo, ya sea Objective-C o Swift. ¿Alguien sabe lo que me estoy perdiendo aquí? Hasta ahora he perdido un día entero tratando de resolverlo.