无法发出预编译的头文件

时间:2018-12-18 05:45:54

标签: xcode google-maps precompiled-headers bridging-header objc-bridging-header

下午好

我正在尝试将Google heatmaps实施到基于地图的项目中。 在此特定项目中,尝试构建时出现以下错误。

  failed to emit precompiled header '/Users/zachwilcox/Library/Developer/Xcode/DerivedData/OddJobs-gbnkfettubuccoheinzfovrqefub/Build/Intermediates.noindex/PrecompiledHeaders/OddJobs-Bridging-Header-swift_3WGH9SNI96Z2-clang_16JN3VASQHE4C.pch' for bridging header '/Users/zachwilcox/Desktop/OddJobs/OddJobs-Bridging-Header.h'

Failed to emit precompiled header

并跟进

  'Google-Maps-iOS-Utils/GMUHeatmapTileLayer.h' file not found

.h file not found

我不确定为什么会这样,因为我创建了一个全新的项目并执行了相同的实现,并且效果很好。但是,当我在现有项目上运行它时,会遇到这两个错误。

我已经研究这个问题已有一段时间了,但我不知道是什么问题。我将桥接头设置为.h文件。 bridging header

我尝试了大多数个人尝试给出的答案,但由于某些原因,它不适用于我的项目。先感谢您。阅读google安装指南时,它说我需要添加的只是一个桥接头文件,这是您在下图中看到的代码。在研究它时,我发现我也需要添加一个.m文件,但是当我这样做时仍然会遇到相同的错误。再次,在我的虚拟项目中,我没有.m文件,只是您在下面看到的所有内容以及所有文件都可以编译。

2 个答案:

答案 0 :(得分:0)

如果您的项目包含pod,那么您还必须为测试项目设置pod配置。

在文件检查器中选择“根项目”->项目名称->信息->配置 将测试项目的配置设置为与主项目enter image description here

相同

答案 1 :(得分:0)

您可能会为所选方案关闭“查找隐式依赖项”。如果您更新/安装了Pod并尝试构建项目,那么如果未选中所选方案的此选项,则很有可能失败。{ {3}}

摘自Apple文档:

  

Parallelize Build –此选项允许Xcode通过构建不同时相互依赖的目标来加快总构建时间。这对于具有许多较小依赖性的项目可以节省时间,并且可以轻松并行运行。

     

查找隐式依赖关系–这是一个非常强大的选项,允许Xcode解析要成功构建方案的主要目标需要构建的目标。但是,这确实带有一些必须注意的尖锐边缘。

     
      
  • 情况:您将库与应用程序目标链接并为该库的目标创建隐式依赖项。

  •   
  • 方案1:启用“查找隐式依赖项”。

         
        
    • 结果:将在构建应用程序目标之前先构建库。然后,应用程序目标将链接到库并成功构建。
    •   
  •   
  • 方案2:“查找隐式依赖项”被禁用。

         
        
    • 结果:在构建应用程序目标之前不会构建该库。应用程序目标无法构建。

    •   
    • 修复:要确保第二种情况不会发生,必须将必要的目标添加到目标列表中并正确排序。

    •   
  •