如何阻止巨大的 Prefix.pch.gch 文件被复制到应用程序包中

Posted

技术标签:

【中文标题】如何阻止巨大的 Prefix.pch.gch 文件被复制到应用程序包中【英文标题】:How to stop huge Prefix.pch.gch file from being copied into application bundle 【发布时间】:2010-05-22 19:16:53 【问题描述】:

由于某种原因,XCode 决定在构建时开始将一个巨大的 Prefix.pch.gch 文件复制到我的应用程序的资源文件夹中。该文件不在 Copy Bundle Resources 构建阶段,我也找不到任何其他应该告诉 XCode 执行此操作的项目设置。有没有人见过这个并且知道发生了什么?

【问题讨论】:

【参考方案1】:

我今天遇到了同样症状的问题,原来是因为我的目标 C 文件之一被包含在目标的 Copy Bundle Resources 文件阶段(由于拖放事故,或者xcodeproj 文件在某些​​时候损坏)。然后 GCC 有助于在目标中包含前缀标头的预编译标头,因为源文件存在依赖关系。

即使文件类型设置为 sourcecode.c.objc,对有问题的源文件执行获取信息也不会显示文件信息对话框中的所有选项卡。

从项目中删除文件并重新添加它可以解决问题。

【讨论】:

就是这样!我在 Copy Bundle Resources 构建阶段有一个 .m 文件。从项目中删除它并阅读它可以解决问题。谢谢! 正确的人。非常感谢!我认为这绝对是一个 xcode 问题,因为我确定没有拖动文件来复制资源! 是的,我当然不是故意的。里面的文件在其中一个内置类上有一个自定义类别,这是我很长时间没有接触过的东西(这个项目现在已经超过 4 年了)。无论如何,再次感谢。【参考方案2】:

您可以尝试在 finder 中对您的 xcode 项目文件执行“显示包内容”,然后在文本编辑器(不是 xcode)中打开 project.pbxproj 文件。

如果您搜索“.pch”和/或“.gch”,您可能会发现一些东西。

【讨论】:

【参考方案3】:

是否有任何复制文件阶段?

Prefix.pch.gch 文件是否在您项目的组树中?检查这一点的最简单方法是选择项目对象,然后在详细信息视图中搜索“gch”。

【讨论】:

不,有 Prefix.pch 文件,但没有 .gch 文件。有两个复制文件阶段,一个复制两个框架(Sparkle,另一个是我编写的),另一个复制我的应用程序的 Spotlight 导入器。 .gch 文件最终位于资源目​​录中,并且在构建时,我在构建结果中看到它被复制的位置。构建结果显示捆绑资源按照它们在复制捆绑资源阶段出现的相同顺序被复制。 .gch 文件复制消息出现在两个实际捆绑资源之间,即使它不在复制捆绑资源构建阶段。 Andrew Madsen:如果您在 Targets 组中选择您的目标,Prefix 文件(其中一个)是否会以这种方式显示在 Detail 视图中? 嗨彼得,不,前缀文件不在我项目中任一目标的详细视图中(应用程序本身和聚光灯导入器)。谢谢【参考方案4】:

我以不同的方式解决了这个问题。首先,我喜欢使用前缀文件,所以我有很多包含标准日志记录、颜色等的内容。

对于前缀文件的每个包含,确保每个包含只处理一次!这可以通过放置:

#ifndef __<Classname>__
#define __<Classname>__ 

< your original header file here >

#endif

【讨论】:

【参考方案5】:

如果您选择“项目”菜单的“项目”项,然后选择“详细信息”选项卡视图,然后在左侧的“组和文件”列表中选择项目,则右侧视图中列出的文件有复选框?那个复选框被选中了吗?如果是,那么取消选中它。

【讨论】:

嗨geowar,感谢您的回复。正如我上面所说,Prefix.pch.gch 文件没有出现在项目的详细信息列表中。我找不到它在项目本身中出现的任何地方。 文件呢?你能把项目文件发给我吗(不需要来源)? (电子邮件:(删除空格))

以上是关于如何阻止巨大的 Prefix.pch.gch 文件被复制到应用程序包中的主要内容,如果未能解决你的问题,请参考以下文章

如何处理巨大的表格[关闭]

如何备份及恢复Linux文件权限

如何备份及恢复Linux文件权限

如何拆分巨大的 DBF 文件?

expressJWT 阻止公用文件夹,如何解除阻止?

如何获取巨大视频文件的切片数据