如何解决PCH错误?
当我尝试在Xcode
构build我的应用程序时,出现以下错误消息:
由不同分支((clang-425.0.24))编译的PCH文件比编译器((clang-425.0.27))
这不会发生,但这是更新Xcode之后的第一个版本。
其他应用程序的工作,但不是这个具体的。
如果我closures"Precompile Prefix Header"
设置,它将起作用。
我如何解决这个错误,并保持这个设置?
这通常是一个caching问题。 通常可以通过按住Option键并selectProduct> Clean Build Folder …来解决
看起来, 产品>清洁生成文件夹… (与按下Option键)适用于大多数人。 请参阅@gaige所选的答案。
如果你不像大多数人(包括我自己),这仍然会给你带来麻烦XCode很可能将你的共享预编译头文件留在其他地方。 对我来说,他们是在类似的文件夹中:
/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders
我刚刚删除了整个SharedPrecompiledHeaders文件夹,并为我解决了这个问题。 虽然我不会去触摸这里的其他东西
吹走项目的DerivedData
文件夹。 查看Xcode首选项 – >位置,看看你保存的位置。
转到Xcode首选项 – >位置(在wcochran的答案中提到),只需重命名您的DerivedData文件夹。 我只是将我的“DerivedData”更改为“DerivedData2”,并强制系统停止引用旧的位置。 这固定它,当我没有其他的答案工作。 见图:
从Finder项目位置删除Build
和DerivedData
文件夹为我工作。
没有其他的select为我工作,这是什么修复它:
我删除了/Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/
的caching文件夹(重命名它也可以)。
尝试删除错误中提到的文件夹,如果你的错误看起来像这样:
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
升级Xcode后,我得到这个与多个项目。 清洁生成文件夹和清洁没有任何效果 – @ sedes答案和@ josema.vitaminew的评论为我做的。 但是,除非你使用一些狡猾的东西,否则它可能会很棘手,所以下面是一步一步的捷径:
- 去失败的生成日志
- 使用cmd -f“SharedPrecompiledHeaders”来find它(这将是一个巨大的可怕复杂的命令行中)
- 拖动select文本“SharedPrecompiledHeaders”和所有的字符之前,但不是后,直到你的path开始位(仍在大块文本的中间)例如对于我:“/ var / folders / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
- 打开Finder
- 菜单:转到 – >转到文件夹…
- 复制/粘贴选定的path
- 在“SharedPrecompiledHeaders”中删除所有的子文件夹(这是安全的:它只是caching的数据)
…现在你所有的项目都将是“固定的”,但是不得不第一次用零caching来重新构build自己(所以NEXT的构build将比平常慢)。
特别是如果你从命令行构build或者你有一个构build脚本,清理Xcode目标是不够的。 你有删除这个文件夹。
预编译头文件的位置可以在
Target -> build settings => "Build locations" -> Precompiled headers cached path
删除这个文件夹,
#rm -fr SharedPrecompiledHeaders
在我的情况下,我摆脱了SharedPrecompiledHeaders这种方式下的所有文件,一切都开始正常工作:
sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete
如果没有通过清洗解决。 这是一个构buildcaching问题 – 按住Option键并导航到产品>清理生成文件夹。 这解决了我的问题。
你应该按住“shift + command + C”,然后你就会build立成功
清理和/或删除派生数据不适用于我。 什么工作是触摸/保存.pch文件(添加一个字符,然后删除它)强制它被重build。 这个伎俩。
如果做一个干净的版本不适合你,在/var/folders/../SharedPrecompiledHeaders
PCH文件,并删除PCH文件,这对我工作。
您可以尝试清洁产品或生成文件夹:
SHIFT + COMMAND + K
选项 + SHIFT + COMMAND + K
我已经尝试清理项目,并清理这两个都没有工作的生成文件夹。
之后,我完全退出了xCode,删除了其标准位置的派生数据文件夹:〜/ Library / Developer / Xcode / DerivedData,再次启动xCode并构build了项目。
这似乎已经解决了我的问题。
更新
这对我来说非常合适:
- closures你的项目或工作区。
- 在Finder中:⇧shift+⌘cmd+ G
- 粘贴:〜/ Library / Developer / Xcode / DerivedData /
- 删除ModuleCache文件夹并清空垃圾箱。
- 打开你的项目。
- 清理:⇧shift+⌘cmd+ K
- 生成:⌘cmd+ B
xCode 7.3.1
参考这里
在我的情况下,Xcode在我的项目主包(/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)中创build了DerivedData文件夹,
我刚刚从我的源代码包中删除了这个文件夹,现在它正在工作。
要检查转到Xcode首选项 – >位置,并查看DerivedData是否被选为“相对”。 看下面的图片
我试图用Swift Package Manager构build项目时遇到了这个错误。
解决办法就是删除.build
目录。
对于我来说,当我将我的项目复制到另一个位置时,这总是会发生。 我会这样做,把它推到回购什么的。
我必须删除旧地址和新地址中的生成文件夹(rm -rf Build /)以使其工作。 这是有道理的,因为生成文件夹将有数据是不相关的新位置。
在这种情况下,清理派生数据或删除sharedPrecompiledHeaders文件夹并不是真的。