Xcode4 使用Xcode 4编译、构建或归档问题(以及依赖项)

Xcode4 使用Xcode 4编译、构建或归档问题(以及依赖项),xcode4,xcode,objective-c,compiler-construction,clang,c-preprocessor,Xcode4,Xcode,Objective C,Compiler Construction,Clang,C Preprocessor,这一问题在过去几周内不断发展,涵盖了更一般的问题(以及从旧版本升级项目) 但是,许多问题都可以通过遵循相同的说明来解决 如果您有以下任何问题,请尝试接受答案中的方法: Xcode 4无法存档应用程序 Xcode 4创建了一个不可用的归档文件 Xcode 4不创建.ipa 由于预处理器错误,Xcode 4无法编译 Xcode 4找不到标头 Xcode 4的代码完成不工作 无法编译项目依赖项 添加依赖项会导致上述任何问题 原始问题 标题:在Xcode 4中未找到词法或预处理器问题文件 我在Xco

这一问题在过去几周内不断发展,涵盖了更一般的问题(以及从旧版本升级项目)

但是,许多问题都可以通过遵循相同的说明来解决

如果您有以下任何问题,请尝试接受答案中的方法:

  • Xcode 4无法存档应用程序
  • Xcode 4创建了一个不可用的归档文件
  • Xcode 4不创建.ipa
  • 由于预处理器错误,Xcode 4无法编译
  • Xcode 4找不到标头
  • Xcode 4的代码完成不工作
  • 无法编译项目依赖项
  • 添加依赖项会导致上述任何问题
原始问题 标题:在Xcode 4中未找到词法或预处理器问题文件

我在Xcode 4中有一个项目,它可以很好地构建并在设备和模拟器上运行,但在尝试归档时,在查找与静态库关联的头文件时出现错误:

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 
Xcode给出了错误

lexical or preprocessor issue file not found 
谷歌搜索显示很多人都有这个问题,但没有解决办法。任何人都有线索

更新:在所有配置中,
用户标题
搜索路径设置为
${builded\u PRODUCTS\u DIR}
。它可以使用任何配置构建,但存档时除外


更新2:
Merchant.h
是自动生成的核心数据类,因此在
.xcdatamodeld
包中,但是,在生成库时,头都会复制到公共头目录。

看起来头搜索路径不正确,在活动方案的生成设置中没有正确配置。验证它们并用当前设置更新您的问题。

我在模拟器上遇到类似问题,但设备和我的标题搜索路径字段不是空的(似乎是默认值)。但改变工作空间似乎解决了这个问题。也许你可以尝试创建一个新的工作区,将你的项目添加到其中,看看这是否有帮助。现在我正在调查原因

注意:以下步骤将解决90%的Xcode归档问题 然而,从评论来看,建议您尝试一下 第一。这可以为您节省数小时的设置调整时间

  • 检查“用户标题路径”是否正确(将“”添加到项目和依赖项中的空格路径)
  • 将“始终搜索用户路径”设置为“是”
  • 在项目中创建一个组调用“Indexing headers”(索引标题),并将标题拖到此组,在出现提示时不要添加到任何目标。这包括.xcdatamodeld中的任何标题,您需要右键单击并查看包内容才能找到它们
  • 对于所有依赖项,将“跳过安装”生成设置设置设置为“是”
  • 将构建阶段中的任何“公共”标题移动到“项目”
  • 将目标上的生成设置“安装目录”设置为
    $(本地应用程序目录)
  • 将目标生成设置“扫描所有源文件以查找包含项”更改为“是”。()
  • 对于较新版本的Xcode(>4.2),您可能希望与工作区相关
  • 手动形成所有引用的项目

  • 我在XCode 4中也遇到了同样的问题:“找不到词法或预处理器问题MyFile.h”。然而,MyFile.m不是一个静态库,只是一个标准类。和MyFile.m和MyFile.h被正确地包含在项目中并编入索引


    所以。。。我退出XCode和模拟器,然后重新启动它们,问题就消失了。

    我的项目中有一个特定的.h文件出现了“未找到文件”错误。通过从项目中删除该.h文件(选择“删除引用”)并重新添加它,我解决了该问题。

    我发现,当我将目标生成设置“扫描所有源文件以查找包含”从“否”更改为“是”时,问题消失了

    我遇到了这样一个奇怪的问题。将“扫描所有资源文件…”更改为“是”没有帮助。我查看了框架搜索路径,发现

    • $(继承)
    • “$(SRCROOT)”
    • “$(SRCROOT)/my/correct/path”

    这似乎是正确的,但仍在失败。然后我试着重新安排2和3的顺序,突然之间,它就好了。所以我不知道为什么会这样,但我想把它添加到列表中,以防它对其他人有帮助

    当我设置


    Build Settings->Project->Search path to Yes

    我可以通过将.h文件复制到finder中的项目目录中来解决这个问题,而不需要对任何构建设置进行任何更改。我根本没有将它们添加到项目中。只要将它们放在项目的文件系统目录中就足以让Xcode的隐式链接正常工作。更多细节。

    添加更多变体:我在
    编译源代码
    构建阶段有两个
    foo.m
    实例,这是如何导致
    foo.h
    的“Header not found”的,我在我的项目中有相同的-2个目标(项目和
    GHUnit
    的项目测试)。当我的方案设置为Project时,
    的导入出现了“未找到词法或预处理器问题文件”的问题。但当我设置为scheme ProjectTest时,一切都正常。因此,我也在项目中添加了
    GHUnitIOS.framework

    对我来说,这个问题是在我向项目中添加了新文件之后出现的;从NSObject派生的空白.m和.h。我是这样解决的:

  • 关闭并重新启动xCode
  • 通过XCode删除了两个新文件
  • 重新编译成功
  • 后来我又重新添加了它们,它也起了作用

    肯定是xCode中的一个bug…

    另一个机会:

    在工作区项目中:查看目标部分的构建阶段。正如许多手册所说,您需要有一个复制文件构建阶段来将所有标题复制到另一个地方,如iOS Fra
    #import "HeaderFile.h"
    
    #import <FrameworkName/HeaderFile.h>