【问题标题】:How to fix PCH error?如何修复 PCH 错误?
【发布时间】:2013-03-05 23:37:01
【问题描述】:

当我尝试在 Xcode 中构建我的应用程序时,我收到以下错误消息:

PCH 文件从不同的分支 ((clang-425.0.24)) 构建,而不是 编译器((clang-425.0.27))

以前不会发生,但这是更新 Xcode 后的第一次构建。

其他应用程序可以工作,但不是这个特定的应用程序。

如果我关闭"Precompile Prefix Header" 设置,它会起作用。

如何修复此错误并仍保持该设置开启?

【问题讨论】:

    标签: xcode clang precompiled-headers


    【解决方案1】:

    这通常是一个缓存问题。通常可以通过按住 Option 键并选择 Product > Clean Build Folder...

    来解决

    【讨论】:

    • 这并没有为我解决错误。我还执行了完全清理并删除了派生数据。
    • 为我工作,除了它在Product > Clean 下并且不需要命令键。 (Xcode 4.6.1)
    • @SteveHaley 有一个Product > Clean,但它做得不够彻底。有些人可以通过Product > Clean 购买,因为大多数Product > Clean Build Folder... 就足够了,而其他人则需要手动删除,如下面的@Sedes 回答所示。
    • 我知道它的老问题,但上述修复对我没有帮助。只需删除派生数据并再次构建项目即可正常工作。
    • 你可以做 rm -rf /ios/build 吗?
    【解决方案2】:

    Product > Clean Build Folder...(按下 Option 键)似乎适用于大多数人。查看@gaige 选择的答案。

    如果您与大多数人(包括我自己)不同,这仍然会给您带来麻烦,XCode 可能会将您共享的预编译头文件留在其他地方。对我来说,它们位于与此类似的文件夹中:

    /var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders
    

    我刚刚删除了整个 SharedPrecompiledHeaders 文件夹,这为我解决了问题。不过,我不会在这里碰太多其他东西……

    【讨论】:

    • 这为我解决了这个问题。对我来说,这是因为我有一个命令行驱动的构建。
    • 如果您遇到这种情况,您可以在 Xcode 构建脚本中找到该文件夹​​。我寻找字符串“SharedPrecompiledHeaders”
    • 是的,这是正确的解决方案。特别是如果您从命令行构建或者您有构建脚本。预编译头位置可以在构建设置中找到,“构建位置”->预编译头缓存路径。
    • 如何找到var目录?
    • @GoldenJoe 打开查找器,Shift-Cmd-G 并输入 /var
    【解决方案3】:

    你应该按住“shift + command + C”,然后你会构建成功

    【讨论】:

      【解决方案4】:

      如果不能通过清洁解决。这是一个构建缓存问题 - 按住 Option 键并导航到 Product > Clean Build Folder。这解决了我的问题。

      【讨论】:

        【解决方案5】:

        您可以尝试清理产品或构建文件夹:

        SHIFT + 命令 + K

        选项 + SHIFT + 命令 + K

        【讨论】:

          【解决方案6】:

          清理和/或删除派生数据对我不起作用。起作用的是触摸/保存 .pch 文件(添加一个字符,然后删除它)以强制重建它。这成功了。

          【讨论】:

          • 这对我有用。我删除了 SharedPrecompiledHeaders 目录、清理构建、清理构建文件夹等。这是在 Xcode 5.1 上
          • PCH 文件在哪里?
          【解决方案7】:

          如果进行干净的构建对您不起作用,请在 /var/folders/../SharedPrecompiledHeaders 中查找 PCH 文件并删除对我有用的 PCH 文件。

          【讨论】:

          • 有一个与此相同的答案,上面由@sedes 发布了更多详细信息。请尽量不要发布重复的答案。
          【解决方案8】:

          特别是如果你从命令行构建或者你有一个构建脚本,清理 xcode 目标是不够的。您已删除此文件夹。

          预编译头文件位置可以在

          Target -> build settings => "Build locations" -> Precompiled headers cached path
          

          删除此文件夹,

          #rm -fr SharedPrecompiledHeaders
          

          【讨论】:

          • 我的缓存路径在构建文件夹 /build/ModuleCache/ 中。从旧位置删除它并没有解决问题
          【解决方案9】:

          升级 Xcode 后,我在多个项目中都得到了这个。清洁构建文件夹和清洁没有效果 - @sedes 回答和 @josema.vitaminew 的评论对我有用。但是除非你使用一点狡猾,否则它可能会很棘手,所以这里有一个一步一步的捷径:

          1. 转到失败的构建日志
          2. 使用 cmd -f "SharedPrecompiledHeaders" 找到它(它会在一个巨大的可怕的复杂命令行的中间)
          3. 拖动选择文本“SharedPrecompiledHeaders”和之前但之后的所有字符,直到您到达该路径位的开头(仍在大文本块的中间),例如对我来说:“/var/folders/03/n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
          4. 打开查找器
          5. 菜单:前往 -> 前往文件夹...
          6. 复制/粘贴所选路径
          7. 在“SharedPrecompiledHeaders”中删除所有子文件夹(这是安全的:它只是缓存的数据)

          ...现在您的所有项目都将“修复”,但必须在第一次零缓存的情况下重新构建自己(因此仅 NEXT 构建会比正常慢)。

          【讨论】:

            【解决方案10】:

            在我的情况下,我以这种方式删除了 SharedPrecompiledHeaders 下的所有文件,一切都开始正常工作:

            sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete
            

            【讨论】:

            • 这是我可以在脚本中轻松使用的东西,所以我喜欢它......我还没有发现任何不好的情况[尚未]
            【解决方案11】:

            删除项目的DerivedData 文件夹。查看 Xcode 首选项 -> 位置以查看保存位置。

            【讨论】:

            • 请注意DerivedData 不一定是您的Build 文件夹所在的位置,这对我很有帮助,谢谢!
            • 删除moduleCache内部的DerivedData
            • 您应该首先尝试像其他答案所说的那样“清理”。如果这不起作用,我只会递归地删除整个DerivedData 文件夹......“从轨道上发射核弹......唯一可以确定的方法。” @whitelionV 这也将 rm moduleCache 以及其中的所有其他内容。
            【解决方案12】:

            从 Finder 中的项目位置删除 BuildDerivedData 文件夹对我有用。

            【讨论】:

            【解决方案13】:

            其他选项都不适用于我,这是修复它的方法:

            我删除了/Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/ 的缓存文件夹(重命名也可以)。

            如果您的错误如下所示,请尝试删除错误中提到的文件夹:

            PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8

            【讨论】:

            • 是的,你是对的。以上都不适合我。只需删除它提到的文件夹,然后重建,就是这样。
            • 这是正确答案。将项目移动到其他路径后,清理/删除 DerivedData 对我不起作用。
            • 这适用于我的命令行构建。对于遇到此问题的任何人,删除第二条路径是您需要做的(错误所说的是当前路径)。
            【解决方案14】:

            转到 Xcode Preferences->Locations(如 wcochran 的回答中所述)并简单地重命名您的 DerivedData 文件夹。我只是将我的从“DerivedData”更改为“DerivedData2”,这迫使系统停止引用旧位置。当其他答案都不起作用时,这为我解决了这个问题。见图片:

            【讨论】:

              【解决方案15】:

              我已尝试清理项目并清理构建文件夹,但均无效。

              之后,我完全退出了 xCode,在其标准位置删除了派生数据文件夹:~/Library/Developer/Xcode/DerivedData,再次启动 xCode 并构建了项目。

              这似乎解决了我的问题。

              【讨论】:

              • 您能详细说明一下吗?
              • 关闭 Xcode,在终端中运行 rm -rf ~/Library/Developer/Xcode/DerivedData,然后打开 Xcode 为我完成。我还确保我的位置(Xcode -> Preferences -> Locations)都是默认的。
              【解决方案16】:

              更新

              这对我来说非常有效:

              • 关闭您的项目或工作区。
              • 在 Finder 中:⇧shift+⌘cmd+G
              • 粘贴:~/Library/Developer/Xcode/DerivedData/
              • 删除 ModuleCache 文件夹并清空垃圾箱。
              • 打开您的项目。
              • 清理:⇧shift+⌘cmd+K
              • 构建:⌘cmd+B

              xCode 7.3.1
              参考here

              【讨论】:

                【解决方案17】:

                在我的例子中,Xcode 在我的项目主包中创建 DerivedData 文件夹(/Users/Path_to_your_project_source_code/YourProjectName/DerivedData)

                我刚刚从我的源代码包中删除了这个文件夹,现在它可以工作了。

                要检查转到 Xcode Preferences->Locations 并查看 DerivedData 是否选择为“Relative”。见下图

                【讨论】:

                  【解决方案18】:

                  我在尝试使用 Swift 包管理器构建项目时遇到了这个错误。

                  解决方法就是删除.build目录。

                  【讨论】:

                    【解决方案19】:

                    对我来说,当我将项目复制到另一个位置时,这种情况总是会发生。我会这样做以将其推入回购或其他东西。

                    我必须删除旧位置和新位置中的 Build 文件夹 (rm -rf Build/) 才能使其正常工作。这是有道理的,因为 Build 文件夹将包含与新位置无关的数据。

                    在这种情况下,清理派生数据或删除 sharedPrecompiledHeaders 文件夹并没有真正做到。

                    【讨论】:

                      【解决方案20】:

                      在您的 ios 项目目录中,转到 build 并删除 ModuleCache 文件夹。再次运行react-native run-ios,它应该可以按预期工作。 总结 - rm -rf ios/build/ModuleCache

                      【讨论】:

                      • 是的,同样适用于 react-native 和 Xcode 的构建工作,但不是来自 CLI 使用 npm run ios。按照建议删除缓存解决了问题。
                      【解决方案21】:

                      如果您正在通过xcodebuild 进行命令行构建,请查看是否使用了-derivedDataPath BUILD_DIR 选项。如果是这样,您的 ModuleCache.noindex 目录将位于 BUILD_DIR 而不是正常的 Xcode 位置。删除 ModuleCache.noindex 目录,一切就绪。

                      我遇到这种情况是因为我正在构建一个 React Native 应用程序,而 iOS 客户端通常是通​​过 React Native 工具集从命令行构建的。

                      【讨论】:

                        【解决方案22】:

                        我刚刚删除了DerivedData 并为我工作。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2011-08-31
                          • 2018-08-09
                          • 1970-01-01
                          • 1970-01-01
                          • 2021-09-06
                          • 1970-01-01
                          • 2015-12-04
                          • 2016-11-17
                          相关资源
                          最近更新 更多