【问题标题】:Fixing file 'project.pch' has been modified since the precompiled header was built error in Xcode修复文件 'project.pch' 已被修改,因为 Xcode 中预编译的头文件被构建错误
【发布时间】:2013-02-10 00:38:32
【问题描述】:

我最近在 info.plist 部分处理我的应用程序,因为我的应用程序不会在我的测试设备上运行:

自从构建预编译头文件后,文件“project.pch”已被修改

需要注意的是,该应用在模拟器中运行良好。


编辑:现在我得到的是这个错误而不是另一个错误:

没有这样的文件或目录(/Users/Me/Library/Developer/Xcode/DerivedData/MyProject-abcdefghijklmnopqrstuvwxyz/Build/Products/Debug-iphoneos/MyApp./MyApp)

如何重新生成 info.plist 文件?

【问题讨论】:

标签: xcode info.plist pch


【解决方案1】:

您可以尝试深度清洁(与产品 > 清洁不同) - Option+Command+Shift+K

注意:这意味着清理构建文件夹(通过按选项 + Product -> 清理文件夹)

【讨论】:

  • 我遇到了这种情况,正在构建我的 Mac OS X 应用程序:'/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/ System/Library/Frameworks/Foundation.framework/Headers/Foundation.h' 已被修改,因为预编译的标头已生成 1 个错误生成。哇!事实上,所有文件的修改日期都是 2 天前。嗯?我已经更新到 Mac OS X 的 Apple 开发者种子,但那是在 10 点 15 分之前大约 3 小时。飞行计划者的深度清理修复了错误。神秘!
【解决方案2】:
  1. 关闭您的项目或工作区。
  2. 在 Finder 中:⇧shift+⌘cmd+G
  3. 粘贴:~/Library/Developer/Xcode/DerivedData/
  4. 删除ModuleCache 文件夹并清空回收站。
  5. 打开您的项目。
  6. 清理:⇧shift+⌘cmd+K
  7. 构建:⌘cmd+B

【讨论】:

  • 我删除了 ModuleCache 文件夹,它似乎可以工作。
  • 删除 ModuleCache 中的所有内容也对我有用。
  • 我在 sdk 10.10 文件被修改时遇到了类似的问题。清除缓存中的所有文件解决了问题
  • 搜索时,将选中的按钮从本机更改为“ModuleCache”,速度会快很多。
  • 也为我工作,虽然 DerivedData 位于我的项目目录中。我正在使用 Xcode 6.3。我的问题是由更改我的项目所在目录的名称引起的。
【解决方案3】:

在我的情况下,错误消息有一个小提示:

注意:修改系统头文件后,请删除模块缓存 在 '~/Library/Developer/Xcode/DerivedData/ModuleCache/5CYAJ91AZCB7'

我试过了,效果很好。

【讨论】:

  • 感谢塞德里克的回答。只有这个解决方案在 Xcode 5.1/iOS 7.1 中对我有用!
  • 这是唯一对我有用 Xcode6-Beta 的答案!谢谢!
  • 如果您不小心修改了系统头文件,这是让您的项目重新构建的唯一方法。您可以命令单击任何系统元素然后对其进行修改这一事实是 Xcode 的一个非常荒谬的“功能”。在允许您编辑它们之前,至少应该有某种警告或其他东西。 ://
  • XCode6 的相同问题已通过此答案得到修复。谢谢大佬!
  • 这解决了我的问题,但我注意到模块缓存的目录在我的项目目录中(在 build 目录中),而不是在 ~/Library 目录中。如果有人一直遇到这个问题,请检查错误输出以查看该目录在您的项目中的位置...
【解决方案4】:

只需触摸项目的 pch 文件就为我解决了这个问题:

touch Test.pch

【讨论】:

  • @kenji 谢谢!我们有一个巨大的项目因此开始在 Jenkins 上失败。做了一个script 来修复它,你可以把它放在你的构建阶段或诸如此类的地方。
  • 奇怪的是这对你们有用。触摸 .pch 应该会更改时间戳,这正是 xcodebuild 错误所抱怨的!
  • 在浪费了一天半之后,您的解决方案终于对我有用。该死的人,你是救世主。谢谢
【解决方案5】:
  • 产品 -> 清洁
  • 产品 + 选项 -> 清理构建文件夹
  • 关闭项目或工作区
  • 在 Finder 中清理“ModuleCache”路径。

在 Xcode6 GM 和 iOS 8.0 中为我工作。

【讨论】:

  • 它对我有用,因为我用 Xcode 6.0.1 替换了 Xcode 6
  • 是的,Xcode 6.0.1 破坏了我的构建脚本。我想知道在以前的 Xcode 安装中是否自动删除了 ModuleCache 文件夹?我不得不从失败的 build.log 中提到的位置手动删除它。对我来说,这是在:/var/folders/b1/s0pj4gvn3cq589pjwdkcx_b80000gn/C/org.llvm.clang
【解决方案6】:

当 Xcode 提供的库的 .h 文件被更改(甚至是空格)时,可能会发生此错误。

可能会尝试以下方法来解决此问题

  • Project -> Build Settings中,将Precompile Prefix Header更改为NO

  • 运行 rm -rf ~/Library/Developer/Xcode/DerivedDataClean Build

【讨论】:

  • “预编译前缀标头”设置修复了我们在 TeamCity 中构建的问题
【解决方案7】:

自从使用命令行构建 (xcodebuild) 从 Xcode 4.6 升级到带有 iOS 项目的 Xcode 5 后,我经常遇到这种情况。

对我有用的是将其用作命令行构建命令:

xcodebuild -project path/to/my.xcodeproj -configuration Debug clean build

在此之前,我已经尝试过:

  • 在 Xcode GUI 中清理项目。
  • 删除有问题的 pch 文件。
  • 删除有问题的 pch 文件的父文件夹。
  • 删除 DerivedData 项目文件夹。

在 Xcode 5.0.2、Mavericks、iOS7 下,以上方法都不适合我。

请注意,我在使用 Xcode GUI 时没有遇到此问题。

【讨论】:

    【解决方案8】:

    我只是转到目录“/$HOME/Library/Developer/Xcode/DerivedData/”,删除那里的所有内容

    【讨论】:

      【解决方案9】:

      只需点击菜单中的产品,然后选择清洁

      产品>清洁

      对我来说工作得很好。

      【讨论】:

        【解决方案10】:

        我遇到了同样的问题。我的错误说就像我需要删除以下位置的缓存,

        Users/myusername/Library/Developer/Xcode/DerivedData/ModuleCache/3FGETKFCU0N0W

        3FGETKFCU0N0W 是一个文件夹,当我删除它然后清理构建项目时。然后错误消失。

        【讨论】:

          【解决方案11】:
          rm -rf ~/Library/Developer/Xcode/DerivedData/
          

          【讨论】:

            【解决方案12】:

            如果您使用 AppCode,您可以尝试删除内容形式: /Users/[用户名]/Library/Caches/appCode30/DerivedData/

            为我工作:)

            【讨论】:

              【解决方案13】:

              另外,只需打开终端,然后删除已生成的 .pcm 文件(Xcode 6 以上

              rm <path-to-pcm-file>
              

              【讨论】:

              【解决方案14】:

              如果您在 git 分支之间切换时遇到此问题,请尝试添加这个 post-checkout 挂钩,它会在您每次更改分支时清理您的项目。

              !/bin/sh
              xcodebuild clean -configuration Debug
              

              相对于您的项目根目录另存为.git/hooks/post-checkout,不要忘记chmod +x .git/hooks/post-checkout

              【讨论】:

                【解决方案15】:

                对我来说,这个问题只出现在 Xcode 6 beta 版本中,所以我切换回 Xcode 5,现在问题解决了。

                我在这里尝试了所有用户建议的所有步骤,但没有人适合我。

                所以,如果你有两个版本的 Xcode 并且只有 Xcode 6 beta 有问题,那么切换到 Xcode 5 并清理项目,问题就会解决。

                【讨论】:

                  【解决方案16】:

                  我一一尝试了这些,但未能构建和运行我的项目。所以我将 Precompile Prefix Header 更改为 NO 如@Abhilash Gopal 所述,然后我重置模拟器,删除派生数据,删除相应的 .pcm 文件(在我的情况下它是来自 UIKit 框架的 UIImage.h,因此删除了 UIKit.pcm)。然后我清理了项目,然后我才能成功构建它。在早期版本的 Xcode 中,这些文件基本上被锁定并且不允许编辑。但现在情况并非如此。希望这对面临同样情况的人有所帮助。

                  【讨论】:

                    【解决方案17】:

                    唯一对我有用的解决方案是运行以​​下命令:

                    sudo rm -R /var/folders/
                    

                    但这给我在 OS X 中带来了很多麻烦。

                    我认为因为 /var/folders/ 用于临时文件,所以应该可以只清空其中的任何内容。 但是我错了,看下面的帖子:link

                    每次我尝试构建我的 Xcode 项目时都会出现您描述的问题 - 我通过 Jenkins 从 CLI 构建它。

                    这意味着我不能每次都运行 rm 命令。所以我找到了一些灵​​感并编写了以下 ruby​​ 脚本来解决我的问题:

                    #!/usr/bin/env ruby
                    
                    require 'fileutils'
                    
                    cache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
                    FileUtils.rm_rf(cache)
                    

                    我希望它对某人有所帮助。

                    【讨论】:

                      【解决方案18】:

                      删除project.xcworkspace 对我有用。

                      project.xcworkspace 是一个描述当前 Xcode 工作空间状态模式的目录。每次启动 Xcode 时,如果 project.xcworkspace 不存在,它将重新生成。

                      为了删除project.xcworkspace

                      • 右击你的项目文件yourProject.xcodeproj
                      • 从下拉菜单中选择Show Package Content
                      • 清除 xcworkspace 文件

                      【讨论】:

                        【解决方案19】:

                        如果您使用 xcodebuild 在命令行上构建,请删除传递给命令的“-parallelizeTargets”选项。这解决了我的问题

                        【讨论】:

                          【解决方案20】:

                          在看了很多答案和有用的建议后,我发现解决方案是:卸载 Xcode 6 并通过可用的 dmg 文件重新安装它,然后安装 Xcode 的所有组件。

                          Product + Option -> Clean Build Folder,Clean Build Project,Deleting Module Cache files and Derived data files,使用 touch .pch,删除 pcm 文件,使用命令行删除 var/folders(令人惊讶的是,所有这些都没有对我有帮助)

                          在找到解决方案之前被卡住了 3 个多小时。希望这对某人有所帮助。

                          谢谢。

                          【讨论】:

                            【解决方案21】:

                            只需打开终端并启动以下命令:

                            rm /Users/pratik/Library/Developer/Xcode/DerivedData/ModuleCache/LKL48GNAN6S7/UIKit-2X95M2Q1NPNPL.pcm
                            

                            给出返回 .pcm 错误的文件路径。然后清理项目并运行...享受!!!

                            【讨论】:

                            • 请解释一下:这个命令有什么作用,为什么能解决OP的问题?
                            • 当然,基本上这个命令将删除创建 ModuleCache 的 tmp 文件。当您保存任何 UIKit 或任何默认框架文件时,它会创建一个不允许构建项目的 tmp 文件。需要删除该 tmp (.pcm) 文件,然后清理您的项目并构建。
                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2021-12-08
                            • 2011-10-27
                            • 2023-03-19
                            • 2021-11-14
                            • 1970-01-01
                            • 2011-11-05
                            相关资源
                            最近更新 更多