使用Xcode 4(和依赖项)编译,构建或存档问题

rjs*_*ing 96 compiler-construction objective-c clang xcode4 c-preprocessor

这个问题在过去几周内已经发展,以涵盖更多一般性问题(以及从旧的升级项目).

然而,许多问题可以通过遵循相同的指令集来解决.

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

  • 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. 
Run Code Online (Sandbox Code Playgroud)

Xcode给出了错误

lexical or preprocessor issue file not found 
Run Code Online (Sandbox Code Playgroud)

很多谷歌搜索显示很多人都有这个问题,但没有解决方案.任何人都得到了修复甚至线索.

更新:user header搜索路径设置为${BUILT_PRODUCTS_DIR}所有配置.除了归档时,它使用任何配置构建良好.

更新2: Merchant.h是一个自动生成的Core Data类,因此在.xcdatamodeld包内,但是在构建库时,标题都会被复制到公共头文件目录中.

rjs*_*ing 119

注意:以下步骤将解决90%的Xcode存档问题,但是根据建议您 首先尝试退出Xcode.这可以节省您设置调整的时间.

  1. 检查"用户标题路径"是否正确(在项目和依赖项中添加""到空格的路径)
  2. 将"始终搜索用户路径"设置为YES
  3. 在项目中创建一个组调用"索引标题"并将标题拖到该组,在提示时不要添加到任何目标.这包括.xcdatamodeld中的任何标头,您需要右键单击并查看包内容以查找它们.
  4. 对于所有依赖项,将"跳过安装"构建设置设置为"是"
  5. 将Build Phases中的任何"Public"标题移动到"Project"
  6. 将目标上的构建设置"安装目录"设置为$(LOCAL_APPS_DIR)
  7. 将目标构建设置"扫描包含的所有源文件"更改为YES.(链接)
  8. 对于较新版本的Xcode(> 4.2),您可能希望阅读与工作空间相关的此问题.
  9. 从所有引用的项目中手动删除project.xcworkspace文件

  • 最后一个建议就是我需要解决这个问题.关闭并重新打开Xcode. (28认同)
  • 注意Three20用户将旧项目从xcode3迁移到xcode4:您(可能)必须更改xcode首选项/位置/高级/ - >目标指定的位置.有关更多信息,请参见http://stackoverflow.com/questions/5261447/xcode-4-three20-create-ipa-archive-no-such-file-or-directory/5262065#5262065 (3认同)
  • 第三步为我做了. (2认同)

ric*_*sun 13

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

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


doc*_*aco 11

当我将目标构建设置"扫描包含的所有源文件"从no更改为yes时,我发现问题消失了.


Dav*_*ora 6

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