【问题标题】:Xcode 10 Failed to emit precompiled header for bridging headerXcode 10 无法发出用于桥接头的预编译标头
【发布时间】:2019-02-27 00:18:48
【问题描述】:

您好,我在 Xcode 10 上遇到了一个非常烦人的错误,即

1 error generated. <unknown>:0: error: failed to emit precompiled header '/Users/me/Library/Developer/Xcode/DerivedData/APP-hlczpckeselwrtaqjcbxdpoiogkj/Build/Intermediates.noindex/PrecompiledHeaders/APP-Bridging-Header-swift_35K3KO8G70VCD-clang_3DGF15CYP79L0.pch' for bridging header '/Users/me/Desktop/Swift/Folder/APP/APP/UNLKV2-Bridging-Header.h'

我不确定如何解决这个问题,我已经尝试了所有方法。今天在没有问题之前非常突然,但是第二次我将 Firebase info.plist 添加到项目中时,我得到了这个错误。我试图删除该文件,确保在“Objective-C Bridging Header”中正确输入了头文件的名称,并将其输入为
$(PROJECT_DIR)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h
我已经多次清理和构建项目并重新安装了所有 pod。

除此之外,我还收到一个错误

找不到JPSVolumeButtonHandler/JPSVolumeButtonHandler.h'文件

如果有人能帮我解决这个问题,我将不胜感激,我整天都在查看每个帖子和论坛,但没有任何东西对我有用。如果您需要有关此问题的更多信息,请告诉我。

【问题讨论】:

  • 这是个人项目吗?如果是的话,调试起来会容易得多,如果人们可以下载 github 项目。
  • 不,这不是个人项目,所以恐怕我做不到,但请随时将我指向不同的区域进行检查,我可以查看并将我看到的内容发送给您您可能需要的信息
  • 这种错误通常伴随着其他错误,这是问题的实际原因。解决第二个错误可能也会解决第一个错误。
  • 我如何弄清楚第二个错误是什么?我在编译器中没有看到任何其他错误或至少一个错误标记

标签: ios objective-c swift xcode bridging-header


【解决方案1】:

遇到了同样的问题,我已经尝试修复了好几个小时。 最终得到了这个解决方案:

  1. 选择方案,从出现的菜单中选择Manage Schemes...
  2. 从弹出的方案列表中找到[Your Project Name]方案,选择它并按列表左下角的-按钮删除
  3. 点击右上角Autocreate Schemes Now按钮

请看下面的截图:

【讨论】:

  • 我终于解决了这个问题,但感谢您的回复,下次遇到这种情况时我一定会尝试一下...希望永远不会,因为它很烦人
  • @Jaqueline,你能用你如何解决桥接头问题来更新你的问题吗?这将有助于未来的搜索者。 ;)
【解决方案2】:

我目前面临完全相同的问题(缺少其他 pod 标头);尝试删除所有 pod 文件夹,再次清除缓存安装,更新 pod... 没有任何效果。

还尝试按照 xconfig 文件中的说明进行操作:FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR) "$(SRCROOT)" "$(SRCROOT)/Framework",但仍然被阻止。

在使用“旧版构建系统”时会发生这种桥接头错误,因为带有 Xcode10 的新构建系统会为旧项目带来更多问题。不知道这是否相关但在这里加入current build phases of my target

编辑:最终我发现了我的问题,对于某些人来说可能是一样的。

在工作区设置中,我将构建系统更改为旧版。但是,我也认为将 Build Location 更改为 Legacy 是个好主意;这就是导致我的问题的原因。

我是如何解决的:

a) 在 Workspace Settings 中,让我们在 'Legacy build system' 上构建系统

b) 点击高级,然后将构建位置更改为Xcode Default

c) 那么我的构建仍然会因为库 libstdc++ 过时而失败;所以我用我的“common.xconfig”文件中的 libc++ 库对其进行了更改:CLANG_CXX_LIBRARY = libc++

我现在一切正常。希望这对其他人有帮助。

【讨论】:

  • 在哪里可以找到 common.xconfig 文件?
  • 你可以CMD+Maj+O --> common.xconfig ||我的在“/Users/USERNAME/Desktop/PROJECT-IOS/MyProject/Build Configurations/common.xcconfig”
【解决方案3】:

你能在...中搜索JPSVolumeButtonHandler/JPSVolumeButtonHandler.h吗

  1. 查找并确保文件存在。
  2. 确保该文件包含在您的项目中。
  3. 如果 JPSVolumeButtonHandler 包含在 bridging-header.h 中,但 JPSVolumeButtonHandler 不知何故在源代码中丢失,您可能会收到一个 emit 预编译错误。

【讨论】:

  • 好的,所以我进去并在我的标题中删除了它,因为事实证明我什至不再使用它,我也将它从我的 podfile 中删除,这样就解决了这个问题。但是我知道有一个问题,“没有这样的模块 ProgressHUD”,我在头文件中有这个问题,而且该文件在项目之外,我如何检查它是否包含在项目中?
  • 你能在你的 pod 文件中包含 ProgressHUD 吗?项目外部是指它作为子模块包含吗?
  • 所以实际上我现在拥有的是 ProgressHUD 作为我的 podfile 中的一个 pod,我可以看到它的文件在框架下,我的桥接头中也有 ProgressHUD,但是我得到了没有像以前那样的模块的相同错误。
  • 您是否尝试删除 pod 文件夹并进行 pod 安装?其他要检查的地方是构建设置下的框架搜索路径。你应该有 $(inherited) $(PROJECT_DIR) 所以它知道你的框架所在的路径。库搜索路径和标题搜索路径相同
  • 我会检查何时可以访问我的计算机并通知您
【解决方案4】:

经过大量搜索和挣扎,我发现将出现“找不到文件”错误的头文件添加到 Xcode 项目中可以解决问题。

希望对你有帮助!

【讨论】:

    【解决方案5】:

    主要问题出在 Pod 文件中。 如果您使用 2 个目标,则需要为第二个目标定义 pod。

    在您的 Pod 文件中,您将拥有类似的内容。

    platform :ios, '9.0'
    
    use_frameworks!
    
    target your_project_target_name do 
    pod 'Alamofire' 
    
    end 
    

    但如果你有两个目标试试这个。

     platform :ios, '9.0'
     use_frameworks!
    
     def available_pods
    
     pod 'Alamofire'
        
     end 
    
    target your_first_project_target do 
    
    available_pods
    
    end 
    
    target your_second_project_target do 
    
    available_pods
    
    end 
    

    我已修复此解决方案的所有错误。 干杯兄弟。

    【讨论】:

      【解决方案6】:

      这个问题可能有很多,但可能是您已声明此框架的搜索路径,但文件夹已以某种方式重新排列。要修复它,试试这个:

      在您使用的目标上单击Build Settings 并搜索:

      搜索路径

      Framework Search PathsHeader Search Paths 可能有许多路径。

      双击路径,您将获得一个可编辑的窗口。 在右侧,您可以选择是否希望 Xcode 搜索框架 non-recursiverecursive。 麻烦的框架选择recursive

      然后点击Clean Build Folder (Cmd-Shift-K) 和 Run (Cmd R) 并保持手指交叉。

      【讨论】:

        猜你喜欢
        • 2018-01-28
        • 1970-01-01
        • 2021-08-06
        • 2022-12-12
        • 2018-11-21
        • 2018-02-27
        • 2018-09-17
        • 2016-06-09
        • 1970-01-01
        相关资源
        最近更新 更多