如何修复PCH错误?


132

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

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

以前没有发生,但这是更新Xcode之后的第一个构建。

其他应用程序可以运行,但不能运行此特定应用程序。

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

如何解决此错误,并且仍然保持该设置不变?

Answers:


246

这通常是一个缓存问题。通常,可以通过按住Option键并选择“ 产品”>“清理构建文件夹”来解决该问题


3
这没有为我解决错误。我还执行了完全清理并删除了派生数据。
本S

6
为我工作,除了它在Product> 下Clean并且不需要命令键。(Xcode 4.6.1)
Steve Haley

1
@SteveHaley有一个Product > Clean,但是做的不够彻底。有些人可以使用购买Product > Clean,其中大多数Product > Clean Build Folder...就足够了,而其他人则需要手动清除,如下面的@Sedes答案所示。
gaige

7
我知道它的旧问题,但是上述修复方法对我没有帮助。只需删除“派生数据”并再次构建项目即可。
Ankit Jain 2015年

2
你能做rm -rf / ios / build吗?
SuperUberDuper'2

47

删除DerivedData项目的文件夹。在Xcode偏好设置->位置下查看,以查看将其保存在何处。


重要的是要注意,文件夹DerivedData不一定在哪里Build,这对我很有帮助,谢谢!
Nit

1
删除moduleCache里面DerivedData
whtlnv

您应该首先尝试“清洁”其他答案。如果这行不通,我只是简单地递归删除整个DerivedData文件夹……“从轨道中核弹……唯一可以确定的方式”。@whitelionV这也将rm moduleCache和那里的其他所有内容。
wcochran

39

似乎“ 产品”>“清理构建文件夹...”(按下Option键)适用于大多数人。查看@gaige选择的答案。

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

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

我只是删除了整个SharedPrecompiledHeaders文件夹,这为我解决了问题。我不会在这里碰其他很多东西...


2
这为我解决了这个问题。对我来说,因为我有一个命令行驱动的构建。
ThomasW

2
如果是这种情况,您可以在Xcode构建记录中找到该文件夹​​。我看着字符串“SharedPrecompiledHeaders”
若泽·曼努埃尔·桑切斯

6
是的,这是正确的解决方案。特别是如果您是从命令行构建的,或者您具有构建脚本。可以在构建设置的“构建位置”->“预编译头缓存路径”中找到预编译头位置。
karim

您如何找到var目录?
GoldenJoe 2014年

1
@GoldenJoe打开查找器,Shift-Cmd-G然后键入/var
Sedes

23

转到Xcode首选项->位置(如wcochran的答案中所述),只需重命名DerivedData文件夹。我只是将我的“ DerivedData”更改为“ DerivedData2”,这迫使系统停止引用旧位置。当没有其他答案有效时,这为我解决了问题。参见图片:

在此处输入图片说明


15

没有其他选项对我有用,这是解决该问题的方法:

我在删除了缓存文件夹/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对我不起作用。
Bill Chan


13

在您的ios项目目录中,转到构建并删除ModuleCache文件夹。react-native run-ios再次运行,它将按预期工作。摘要-rm -rf ios/build/ModuleCache


是的,也是在react-native上,并且使用Xpm而不是使用npm run ios从CLI进行构建。按照建议删除缓存可以解决该问题。
dakt

6

升级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构建会比正常情况慢)。


5

就我而言,我以这种方式摆脱了SharedPrecompiledHeaders下的所有文件,一切开始正常运行:

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

这是我可以轻松地在脚本中使用的东西,所以我喜欢它...我还没有发现任何坏情况[至今]
Matt

5

尝试使用Swift Package Manager构建项目时遇到此错误。

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


4

特别是如果您是从命令行进行构建的,或者您具有构建脚本,则仅清洁xcode目标是不够的。您已删除此文件夹。

预编译的头文件位置可以在

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

删除该文件夹,

#rm -fr SharedPrecompiledHeaders

在此处输入图片说明


我的缓存路径在构建文件夹/ build / ModuleCache /中。从旧位置删除它并不能解决问题
TheJeff

3

如果无法通过清洁解决。这是构建缓存问题-按住Option键并导航至“产品”>“清理构建文件夹”。那解决了我的问题。


3

以我为例,Xcode在项目主捆绑包中创建DerivedData文件夹(/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)

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

要检查,请转到Xcode首选项->位置,并查看DerivedData是否选择为“相对”。见下图 在此处输入图片说明


3

对我来说,这总是在我将项目复制到另一个位置时发生。我会这样做以将其推入仓库或其他东西。

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

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


2

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


2

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


这对我有用。我删除了SharedPrecompiledHeaders目录,清理构建,清理构建文件夹等。该文件位于Xcode 5.1
migs647 2014年

PCH文件在哪里?
TheJeff

2

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


2
@sedes在上面发布了一个与此更相同的答案。请尽量不要发布重复的答案。
michaellindahl

2

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

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K


2

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

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


1

我试过清理项目和清理构建文件夹,但两者均无效。

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

这似乎为我解决了问题。


您能详细说明一下吗?
理查德·达利2015年

关闭Xcode,rm -rf ~/Library/Developer/Xcode/DerivedData在Terminal中运行,然后再打开Xcode,这对我来说是成功的。我还确保我的位置(Xcode->首选项->位置)均为默认位置。
sman591 '16

1

更新

这对我来说非常合适:

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

xCode 7.3.1
参考在这里


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.