fangmobile
(Fangmobile)
1
Hi,
I am building a static lib "MyModule", then package it to xcframework suing -create-framework
my build script
xcodebuild build \
-workspace MyWorkSpace.xcworkspace \
-scheme MyModule \
-derivedDataPath derived_data \
-arch x86_64 \
-sdk iphonesimulator \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO \
SWIFT_INSTALL_OBJC_HEADER=NO`
how ever when downstream project uses this xcframework, it gets error
/xxx/MyModule.swiftmodule/x86_64-apple-ios-simulator.swiftinterface:5:19: Underlying Objective-C module 'MyModule' not found
/xxx/ViewController.swift:9:8: Failed to build module 'MyModule' for importation due to the errors above; the textual interface may be broken by project issues or a compiler bug
when looking at the .swiftinterface file, line 5 is like this
@_exported import MyModule
either I remove @_exported or I remove the whole line all together then my downstream project compiles fine.
what build flag or build setting I can set so that I don't have to manually remove this line? it is strange the .swiftinterface file of MyModule needs to import itself in the .swiftinterface file.
fangmobile
(Fangmobile)
2
Also the xcworkspace is created by Cocoapods. I am not sure whether this might be related.
I am not using Cocoapods, but have the same error.
jrose
(Jordan Rose)
4
Xcode’s framework targets always have an umbrella header, which it will direct Swift to import with the -import-underlying-module compiler flag. Last I checked there was no way to turn this off for a framework target. But publishing an empty umbrella header and Xcode’s default module map avoids the problems.
1 Like