Xcode 5 错误:“格式错误或损坏的 AST 文件:子模块中的伞头不匹配”
Posted
技术标签:
【中文标题】Xcode 5 错误:“格式错误或损坏的 AST 文件:子模块中的伞头不匹配”【英文标题】:Xcode 5 error: "Malformed or corrupted AST file: mismatched umbrella header in submodule" 【发布时间】:2013-12-15 16:36:48 【问题描述】:将 StoreKit 添加到我的 Xcode 5 项目后,我现在看到...
“格式错误或损坏的 AST 文件:子模块中的伞头不匹配”
...每当我从 StoreKit 导入任何标题时。我没有更改那些系统标头,清除派生数据和通常的 Clean Build Folder 修复也不起作用,重新启动 Xcode 也不会改变任何东西。
我在 Clang 源中看到报告了错误,但我不知道为什么。以下是来自http://clang.llvm.org/doxygen/ASTReader_8cpp_source.html 的相关 Clang 代码:
case SUBMODULE_UMBRELLA_HEADER:
03728 if (First)
03729 Error("missing submodule metadata record at beginning of block");
03730 return true;
03731
03732
03733 if (!CurrentModule)
03734 break;
03735
03736 if (const FileEntry *Umbrella = PP.getFileManager().getFile(Blob))
03737 if (!CurrentModule->getUmbrellaHeader())
03738 ModMap.setUmbrellaHeader(CurrentModule, Umbrella);
03739 else if (CurrentModule->getUmbrellaHeader() != Umbrella)
03740 Error("mismatched umbrella headers in submodule");
03741 return true;
03742
03743
03744 break;
03745
明显和我进口的伞头对比
#import <StoreKit/StoreKit.h>
到其他东西,但我无法确定其他东西是什么。
有没有其他人遇到过这个问题,并希望找到解决方法?
【问题讨论】:
按照***.com/questions/5544985/…>中的指示,我能够稍微神秘地解决它: 1. 转到构建设置 2. 搜索“框架搜索路径” 3. 并删除预填充的路径. 【参考方案1】:我能够遇到这个问题,按照上面约翰提到的方向对我不起作用。我能够通过执行以下操作来解决此问题:
关闭所有打开的 XCode 项目。 删除 Derived Data 文件夹中的所有文件夹。如何进入派生数据文件夹?只需右键单击您的产品构建和显示查找器,浏览文件夹层次结构并查找派生数据。
希望这会有所帮助。这似乎是 Xcode 中的错误?但不确定。
【讨论】:
【参考方案2】:这为我解决了:
-
转到项目构建设置
向下滚动到 LLVM 5.1 语言模块
将启用模块(C 和 Obj C)设置为 NO
【讨论】:
大声笑!这有点血腥,但它确实有效……该模块是一个新的 LLVm 功能,可以减少构建时间。至少,当它不会阻止构建成功时! 只是补充一点,在我的情况下,问题只发生在我的单元测试目标上,所以我只是禁用了这个特定目标的模块......直到我找到更好的解决方案。 :-/ 谢谢!【参考方案3】:在 Xcode 中转到 Window->Organizer->Projects 选择您的项目,然后按 Derived data 旁边的删除按钮。刚刚做了(并且有效)了以下问题的信息:
fatal error: malformed or corrupted AST file - Xcode
【讨论】:
【参考方案4】:在您的项目文件夹中,会有几个名为 Derived Data 和 build 的文件夹。只需删除这些文件夹,问题就会得到解决。打开 XCode 后,这些文件夹会自动创建。
【讨论】:
以上是关于Xcode 5 错误:“格式错误或损坏的 AST 文件:子模块中的伞头不匹配”的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 构建失败并出现“致命错误:格式错误或损坏的 AST 文件”Crashlytics.h