如何修复 PCH 错误?

Posted

技术标签:

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

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

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

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

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

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

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

【问题讨论】:

【参考方案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 的评论对我有用。但是除非你使用一点狡猾,否则它可能会很棘手,所以这里有一个一步一步的捷径:

    转到失败的构建日志 使用 cmd -f "SharedPrecompiledHeaders" 找到它(它会在一个巨大的可怕的复杂命令行的中间) 拖动选择文本“SharedPrecompiledHeaders”和之前但之后的所有字符,直到您到达该路径位的开头(仍在大文本块的中间),例如对我来说:“/var/folders/03/n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders 打开查找器 菜单:前往 -> 前往文件夹... 复制/粘贴所选路径 在“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 文件夹对我有用。

【讨论】:

可能是某些人(包括我)的.build 文件夹 工作正常。另见***.com/questions/33653727/…【参考方案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 并为我工作。

【讨论】:

以上是关于如何修复 PCH 错误?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 R 的图中修复图例

第一次使用 PCH,得到链接器工具错误

Visual Studio - 如何修复二进制项目文件中的路径?

如何轻松修复 Checkstyle 错误?

如何修复 Ubuntu 中检测到系统程序错误的问题

使用 vue.js 时如何修复“1 个可能使用 `--fix` 选项修复的错误”?