存档构建中的Xcode 4 gcc失败:跳过预编译步骤?

时间:2011-05-06 02:39:38

标签: xcode gcc archive precompiled-headers

我已经能够成功存档于Xcode 4,但突然间(??),我不能。构建失败并带有无效的.pch文件。错误被粘贴在下面(来自使用-Winvalid-pch的重新尝试,但是从构建日志中发生的事情是,预编译的头文件实际上没有被预编译 - 它是一个iOS应用程序,直接从一个CopyPNG步骤为.m编译。

我可能偶然翻过一些东西吗?在.pbxproj文件的差异中,似乎没什么奇怪的。

cc1obj: warning: /Users/myname/Library/Developer/Xcode/DerivedData/Foo-afikuaovoaeqhreaaaakpafseuuv/Build/PrecompiledHeaders/Foo_Prefix-guqixmujoiaaaacwjctfkrztxmbz/Foo_Prefix.pch.gch: created by a different GCC executable
cc1obj: error: /Users/myname/Library/Developer/Xcode/DerivedData/Foo-afikuaovoaeqhreaaaakpafseuuv/Build/PrecompiledHeaders/Foo_Prefix-guqixmujoiaaaacwjctfkrztxmbz/Foo_Prefix.pch: No such file or directory
cc1obj: error: one or more PCH files were found, but they were invalid

所有配置的“预编译前缀标题”构建设置均为“是”。产品 - >清洁无济于事。删除派生数据下的缓存pch内容并不能解决问题。真的看起来整个“预编译”步骤都缺失了。

另一个事实:启用设置“增加预编译标题的共享”是否让它成功。但我几乎找不到这个标志真正起作用的参考,我之前从未使用过它。也许是合理的,当发生这种情况时,预编译步骤仍然没有出现。

2 个答案:

答案 0 :(得分:5)

你有清洁然后重建吗? 产品菜单==>的清洁即可。清理通常可以解决这些问题,有效地指示Xcode编译所有内容,无论它是否认为该文件的先前版本仍然有效。

如果失败,请尝试在~/Library/Developer/Xcode/DerivedData/YourProjectNamexxx处清除项目的Derived Data文件夹,其中xxx是一个uuid风格的字符串。

答案 1 :(得分:0)

批准的答案是正确的,只是注意它只在某些情况下有效。

我刚刚将项目转换为工作区,并将Derived Data Location从默认更改为Workspace-relative。预编译的标头立即停止工作,清理旧位置似乎没有任何区别。很好的cource,因为它是OLD的位置!

工作区相对位置似乎位于保存工作区文件(myProject.xcworkspace)的文件夹中。现在有了新的子文件夹DerivedData,其中包含由workspace命名的文件夹,其中包含熟悉的内容。

索引文件夹包含PrecompiledHeaders,它包含(最终)多个子文件夹。删除所有这些并重新编译强制预编译。