Xcode12编译私有CocoaPods框架报Include of non-modular header错误如何解决
可行解决方案如下:
- 同时给Pod自身目标加编译配置
你之前只配置了user_target_xcconfig,该配置仅对集成APod的上层主工程生效,APod自身编译阶段不会生效,需要在APod的podspec中新增Pod目标的配置:
s.pod_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
配置完成后执行pod deintegrate && pod install重新集成即可。
- 补全依赖声明
如果ComponentKit是BPod的依赖,你需要在APod的podspec中显式声明ComponentKit为依赖,哪怕是间接依赖也需要显式声明,CocoaPods会自动处理头文件的模块映射关系:
s.dependency 'ComponentKit'
同时检查BPod的podspec是否已经将ComponentKit声明为公开依赖,且BPod自身也开启了上述clang配置项。
头文件使用前置声明替代导入
如果WWLocationVC.h中仅用到ComponentKit的类引用,不需要调用其方法、访问属性,可以用@class前置声明代替头文件导入,把实际的#import语句保留在.m文件中,既不需要修改现有代码结构,也能避免非模块化头文件导入报错。为ComponentKit手动配置modulemap
如果ComponentKit本身没有提供模块化声明,你可以在BPod中新增自定义modulemap文件,将ComponentKit的公开头文件纳入模块声明,之后在BPod的podspec中指定modulemap路径即可:
s.module_map = '路径/你的自定义modulemap文件名.modulemap'
内容的提问来源于stack exchange,提问作者jiaoxiaker
相关产品推荐
相关产品推荐

