我在XCode中有一个Objective C项目。在构建时,XCode会预编译我的前缀PCH文件两次。第一次,它使用了参数-x objective-c-header,它工作得很好。第二次,它使用-x c-header,但失败了(由于包含Objective C代码的文件)。
我有另一个项目也是这样设置的,但它构建得很好。( PCH只预编译一次,目标是C。)我并排比较了这两个项目的构建设置,相关的设置没有什么不同。我并排比较了目标的构建设置,同样,没有相关的差异。
我试着清理所有的目标并重建,但是没有成功。我试着重启XCode,但是没有成功。我在项目文件夹中添加了c-header,但它只出现在构建日志中。
这可能是什么原因造成的?
发布于 2010-11-04 05:04:41
我讨厌回答自己的问题,但我想通了。我禁用了预编译前缀头,看看这是否可以让我继续工作。构建仍然失败,并出现相同的错误,但当包含项目中忘记的.c文件中的文件时,构建失败。显然,这个.c文件的存在是这个项目和其他项目之间的区别。现在我知道是怎么回事了,我把代码移到了#ifdef __OBJC__中,一切看起来都很正常。
发布于 2010-11-04 11:25:24
由于您的项目中有多种语言,所以需要多次重新构建PCH文件;一次是使用objective-c编译器,另一次是直接使用C文件,因此您在OBJC #ifdef之外有了Objective-C代码,这导致直接C编译器吃了午饭。
如果您有一个C++文件,那么您最终可能会得到3个PCH编译(IIRC --我上次使用它已经有一段时间了)。
https://stackoverflow.com/questions/4091489
复制相似问题