xcode4工作空间中的两个项目(#import failure)

时间:2011-03-11 09:18:58

标签: import header xcode4 workspace

我真的很难在xcode 4中使用它。

我有一个项目,我将在许多应用程序(网络)中重用,所以我创建了一个工作区并添加了我的两个项目。到现在为止还挺好.... 这是它失败的地方..

#import "JSONRequest.h"

没有明显的理由。它会自动完成头文件的文件名。我认为这与“方案”(xcode 4中的新功能)有关,所以我试图在构建阶段添加我的网络目标。改变它们的顺序...在管理方案下设置“共享”..我已经尝试了很多不同的设置组合而没有任何成功..而错误信息是获取的是:

JSONRequest.h: No such file or directory

如果您有任何线索,请告诉我。

3 个答案:

答案 0 :(得分:10)

您可以将您引用的项目的标题或源文件夹添加到标题搜索路径。

  1. 单击导入JSONRequest.h的目标。
  2. 点击Build Settings。
  3. 在搜索框中输入“标题搜索路径”。
  4. 双击值单元格。
  5. 点击+号。
  6. 设置您所引用的项目的路径。我们假设它叫做JSONlib。该路径相对于引用项目的根(使用JSONlib的项目)。例如:../ JSONlib / src / headers /或.h文件所在的任何地方。
  7. 点击完成。
  8. 清洁然后再建造。
  9. 您可以在Apple开发者论坛中找到有关此问题的更多信息。祝你好运。

答案 1 :(得分:6)

你真的想做什么?

如果您有一个完整的Xcode项目,您打算在不同的产品之间共享,这通常表明您的项目构建了一个或多个目标(例如框架等)。因此,您的“共享”项目应该能够自己构建框架,而不管它包含在哪个工作区中,对吧?

让我们假设它是一个框架。在大多数情况下,Xcode可以通过简单地使用框架将框架产品添加到(假设)应用程序的链接构建阶段来确定依赖性。完成。 Xcode应该知道首先构建框架项目的目标,因为它在构建应用程序项目的目标时会被链接。

所以你的问题可能只是知道Xcode在哪里寻找文件。由于工作空间内的项目共享该工作空间的构建文件夹,因此它们可以全部“看到”彼此。但是在框架的情况下,按文件名进行简单导入不会削减它。你需要:

#import <MyNetworkingFramework/MyNetworkingFramework.h>

由于您要包含一个特定的标头(JSONRequest.h)(它必须是框架目标的复制标头构建阶段中的公共标头之一),您需要:

#import <MyNetworkingFramework/JSONRequest.h>

如果您的“共享”项目不是框架,则需要修改您的问题,以包含对您的两个项目及其目标的更全面的描述。

答案 2 :(得分:1)

这对我有用,

在构建设置 - &gt; 标题搜索路径 - &gt;添加以下条目

$(SRCROOT) and mark it as recursive.

如果以上不起作用,您也可以尝试以下方式,

<path-of-other-project> and mark it as recursive.

希望这个对你有所帮助! (您可能需要清理或重新启动工作区)