1

我在 XCode 中有一个 Objective C 项目。在构建时,XCode 会预编译我的前缀 PCH 文件两次。第一次,它使用 arguments -x objective-c-header,并且工作正常。第二次,它使用-x c-header,它失败了(由于文件包含 Objective C 代码)。

我有另一个设置相同的项目,但它构建得很好。(PCH 只预编译一次,使用 Objective C。)我并排比较了两个项目的构建设置,没有任何相关的不同。我并排比较了目标的构建设置,同样没有相关差异。

我尝试清理所有目标并重建,但没有运气。我尝试重新启动 XCode,但没有运气。我 grep 了我的项目文件夹c-header,但它只显示在构建日志中。

这可能是什么原因造成的?

4

2 回答 2

7

由于您的项目中有多种语言,PCH 文件正在多次重建;一次使用 Objective-C 编译器,一次使用直接 C 文件,因此您在OBJC #ifdef 之外拥有 Objective-C 代码,这导致直接 C 编译器占用了它的午餐时间。

如果你有一个 C++ 文件,你可能最终会得到 3 个 PCH 编译(IIRC——自从我搞砸了它已经有一段时间了)。

于 2010-11-04T03:25:23.913 回答
3

我讨厌回答我自己的问题,但我想通了。我禁用了预编译前缀标头以查看是否可以让我继续工作。构建仍然失败并出现相同的错误,但是当包含我忘记在项目中的 .c 文件中的文件时它失败了。显然,这个 .c 文件的存在是这个项目与另一个项目的区别。现在我知道发生了什么,我将代码移到了#ifdef __OBJC__.

于 2010-11-03T21:04:41.237 回答