In order for my Objective-C framework to link successfully in my Swift cocoa touch framework, I had to use this unpretty workaround, which involves importing all framework headers into the project as public headers.
I totally don't need all of them appearing in my umbrella header, so I want to somehow remove the bunch of warnings generated. ("Umbrella header for module 'Foo' does not include header"). I went through LLVM warning settings in the build settings, but could not found it.
If you're getting this warning from a “Compile Swift source files” ▸ “Precompile bridging header” build step (also labeled PrecompileSwiftBridgingHeader
), here's how you suppress it:
- Find the Build Settings for your project.
- Search for “Other Swift Flags”.
- Add
-Xcc
and -Wno-incomplete-umbrella
to “Other Swift Flags” (in that order).
The warning flag is -Wincomplete-umbrella
, so to suppress, pass -Wno-incomplete-umbrella
.
Try setting the header role from public to project and make sure that you don't reference any third-party headers from your own headers - only from implementations.
Any header that is of role public must be imported into the umbrella header.