Failed to emit precompiled header for bridging header
我从GitHub下载了一个项目,然后pod下面的文件,其中一些是由OBJ-C编写的,我使用了一个桥头。
1 2 3 4 5 6 7 8 9 10 | pod ‘SnapKit’ pod ‘MJRefresh’ pod ‘Alamofire’ pod ‘Kingfisher’ pod ‘MBProgressHUD’ pod ‘pop’ pod ‘EVReflection’ pod ‘StreamingKit’ pod ‘iCarousel’ pod ‘ReflectionView’ |
当我使用Xcode 9.0 beta 2运行项目时,遗憾的是错误日志如下:
error: failed to emit precompiled header
'/var/folders/kd/4gh0_kxx3jx4thjb_sssmmcw0000gn/T/EvoRadio-Bridging-Header-97bd5f.pch'
for bridging header
'/Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadio-Bridging-Header.h'
我用google搜索,但没有这样的问题。错误意味着它需要一个PCH文件?
这是我的
它解决不了。
怎么做?
在为加密核心数据添加可可豆荚之后,我也遇到了完全相同的问题(Xcode9 beta 6)。
这是我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # Uncomment the next line to define a global platform for your project platform :ios, '9.0' pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git' target 'Root' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for Root target 'RootTests' do inherit! :search_paths # Pods for testing end target 'RootUITests' do inherit! :search_paths # Pods for testing end end |
解:
1我将
2然后将
以上都是我项目中的目标构建设置。
请看看这些SO答案:
1继承标头搜索路径
2继承用户搜索路径
请注意,如果您的桥接标头导入的Objective-C代码本身通过
确保打开正确的项目工作区,否则
我在以前工作正常的项目中看到了同样的错误。
我发现我不小心打开了
对我来说,当我向现有项目添加新的构建配置和方案时,会出现此问题。
解决方案是在新创建的方案上运行
你可以尝试这个解决方案。我通过这种方式解决了同样的问题。
产品>方案>编辑方案>在左侧菜单上选择"构建">查找隐式依赖项
在构建选项卡下,选中"查找隐式依赖项":
然后再打扫干净并再次构建。
我已经尝试了答案中提到的所有上述步骤,但没有任何对我有用,问题基本上是项目的部署目标版本和podfile。
在我的项目中,部署目标是10.0,而在我的podfile中,它是11.0。
对于我的情况,我在文件夹名称"Supporing FIles"而不是"Supporting Files"中输入了拼写错误。
在我的情况下,我在我的一个项目文件中有相同的编译器错误和其他错误,如"未知类型",所以我只是将其添加到有问题的文件中,它立即解决了。
有很多理由和事情可以做,例如:
- 重启Xcode,清理,构建
- 删除Pods目录和pod安装
- 检查丢失的文件是否已添加到您的pod文件中
- 检查丢失的文件是否添加到您的桥接标题
- 像这里改变标题设置iOS - 构建失败,CocoaPods无法找到头文件
唯一适合我的是Xcode 9中接受的答案 - 未能发出预编译的头文件。
podfile中的
删除
我的经验是,Xcode无法找到项目中导入的pod / frameworks的头文件。
我的项目经验:
更新Xcode9.2 - 9.3由于隐式定义现在不可用或过时,许多cocoapods必须更新。
我已将Podfile更改为现在包含'use_frameworks!'。在此之后以及处理其他编译问题后,我发现了您遇到的错误。我相信添加'use_frameworks!阻止了一些在iOS 8之前支持的pod正确编译。我采取的步骤来纠正这个问题:
然后我再次
最后,我删除了Podfile中的use_frameworks行,然后重复步骤1-3,项目现在能够找到丢失的头文件,问题再也没有自我呈现。
对于Xcode 11,我遇到了"Security.framework"的问题。 我删除了这个依赖项,然后重新添加它。 最终解决了其他问题
我更新了新的Xcode后,我也受此影响。 经过几个小时的调查,我发现如果你有多个目标,你现在必须在Xcode 10中的pod文件中添加更多目标。所以你的代码应该是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | platform :ios, '9.0' target 'EvoRadio' do pod ‘SnapKit’ pod ‘MJRefresh’ pod ‘Alamofire’ pod ‘Kingfisher’ pod ‘MBProgressHUD’ pod ‘pop’ pod ‘EVReflection’ pod ‘StreamingKit’ pod ‘iCarousel’ pod ‘ReflectionView’ target 'EvoRadio2ndtarget' # add your second target end |
我发现在Xcode 9中你不需要添加,但在Xcode 10中你需要添加它。 希望这可以帮助。
就我而言,我正在构建错误的方案(左上菜单)。
我有相同的场景,请确保您已包含在YourProjectName-Bridging-Header.h中的文件A.
- 如果它使用其他一些类,那么那些其他类也包含在该文件A之前