【问题标题】:Xcode 9 - failed to emit precompiled header [duplicate]Xcode 9 - 未能发出预编译的标头[重复]
【发布时间】:2018-02-27 19:14:11
【问题描述】:

我在 Objective-C 和 swift 中都有一个项目,采用 MyProjectName-Bridging-Header.h,我还配置了 Objective-C 桥接头。 我还在 .pch 文件中添加了“MyprojectName-Swift.h”。

这在 xcode 8.2 上运行良好,但是当我从 xcode 9 构建我的项目时,我收到以下错误。

未能发出预编译的标头 '/Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch' 用于桥接头 '/Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'

请帮我解决这个问题。谢谢!

【问题讨论】:

  • 强制退出 Xcode,删除派生数据,打开 Xcode clean your build 然后运行项目
  • @GouravJoshi 感谢您的回复,我已经完成了所有这些任务。但还是有同样的问题
  • 我也有同样的问题,但是我还没有找到解决办法。
  • @Shubham 你解决了这个问题吗?
  • @Maddy 我得到了这个问题的解决方案,希望这对你也有用。

标签: ios objective-c swift xcode xcode9


【解决方案1】:

您可以尝试此解决方案。我已经通过这种方式解决了同样的问题。

产品 > 方案 > 编辑方案 > 在左侧菜单中选择“构建”> 查找隐式依赖项

在构建选项卡下,选中“查找隐式依赖项”:

然后进行清理并重新构建。

【讨论】:

  • 完美,我禁用了它以提高构建时间,然后我忘记了,谢谢哥们
【解决方案2】:

还要确保“ProductModuleName-Swift.h”的导入在您的 .m 文件中,而不是在您的 .h 文件中。

【讨论】:

  • 我已经把它放在 .h 文件上,它工作正常,这不是问题
  • @Harris 这是我的解决方法。谢谢。
  • 您可能还需要在 .h 文件中前向声明类和协议:developer.apple.com/documentation/swift/…
【解决方案3】:

@李亚坤 如果项目中有多个目标,这是解决方案,podfile 中的每个新目标都必须有:

target 'NEWTARGET' do
    # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
    use_frameworks!

    # Pods for MAINTARGET
    shared_pods
end

【讨论】:

    【解决方案4】:

    将我自己的情况添加到循环中。

    在我的桥接头文件中,假设我添加了一个导入

    #import "File.h"

    File.h 头文件中,有一个从 Prefix.pch 中的导入引用的类型,必须在我的 File.h 中添加缺少的 #import

    【讨论】:

    • 这也发生在我身上,你如何解决这个问题?
    • 抱歉耽搁了,您必须确保在桥接头中导入的头文件包含它们的所有依赖项(即使是那些从前缀头中隐含的)
    【解决方案5】:

    当您在运行 xcodebuild 命令时在终端中收到此错误时,请确保您传递了 -workspace YourWorkspace.xcworkspace

    【讨论】:

    • 我是-project,它不适用于*.xworkspace。 -工作区解决了:)
    【解决方案6】:

    我发现我不小心打开了ProjectName.xcodeproj 文件而不是 ProjectName.xcworkspace 文件。

    打开xcworkspace文件,项目将重新开始工作!

    【讨论】:

      【解决方案7】:

      此外,如果您有多个目标,请注意在每个文件中包含您的 #imports。

      【讨论】:

        【解决方案8】:

        也许你创建了一个新目标,但你没有在 podfile 中添加它

        【讨论】:

        • 请发布代码,而不是代码图像。
        • 唯一的答案对我有用..thanks man :+1:
        • 当我尝试运行单元测试时,答案确实对我有帮助。我唯一需要的是在 podfile 中添加类似:“target :AppTests do #some pods end”
        【解决方案9】:

        在我看来,我解决了简单地切换导入语句的顺序并且构建工作正常。

        【讨论】:

        • 真的很重要!
        【解决方案10】:

        如果您在项目中使用 cocoapods,请阅读此内容。 在更新 pod 和 xcode 后,我只是将部署目标更新到 iOS 10 或 11,使首次构建成功。所以问题出在我有行的 podfile 里面

        platform :ios, '11.0'
        

        我在项目中的部署目标是 9.0 在我将我的 podfile 更改为平台后

        platform :ios, '9.0'
        

        项目已修复。

        【讨论】:

        • 谢谢!我在合并分支时遇到了这个问题,我的 podfile 设置为 platform :ios, '10.3' 而我的 xcode 最小部署目标仍为 10.0,您需要在 xcode 中将其更改为 10.3 然后运行 ​​pod install
        【解决方案11】:

        在我的情况下,我的一个项目文件中出现了相同的编译器错误和“未知类型”等其他错误,所以我只是将它添加到有问题的文件中,它立即解决了它。

        #import <UIKit/UIKit.h>

        【讨论】:

          【解决方案12】:

          最后我得到了这个问题的解决方案。 在我的项目中,Prefix Header 路径没有明确定义。之前的路径是

          $(SRCROOT)/MyPrefixHeaderFile.pch

          MyPrefixHeaderFile.pch 在项目文件夹内的另一个文件夹中,所以我将Prefix Header 路径更新为

          $(SRCROOT)/FolderName/MyPrefixHeaderFile.pch

          【讨论】:

          • 你是怎么做到的?
          猜你喜欢
          • 2018-09-17
          • 1970-01-01
          • 2018-07-16
          • 2020-03-05
          • 2019-02-27
          • 2022-12-12
          • 2021-08-06
          • 2018-01-28
          • 2018-05-27
          相关资源
          最近更新 更多