在Xcode中添加项目依赖项

时间:2012-03-17 20:32:42

标签: ios xcode ios-simulator

我正在与AR Drone合作开发新的应用程序。

我想在两个项目之间建立依赖关系。所以当我编译一个时,我希望Xcode能够帮助自动编译另一个。我曾与谷歌搜索过这个问题。找到的解决方案非常陈旧,不适用于Xcode 4。

现在,我有两个项目,即ARDroneEngine.xcodeproj和FreeFlight.xcodeproj。

ARDroneEngine是FreeFlight的库。屏幕截图如下。

enter image description here

如果我使用iPhone / iPad模拟器编译FreeFlight,那很好,因为最后使用相同的设置编译ARDroneEngine。这就是问题所在。为了测试我的应用程序,我想在我的iPhone中编译和运行FreeFlight。因此,当我将设置更改为“FreeFlight> xxx的iPhone”并进行编译时,会出现错误:“Apple Mach-O Linker Error”。

我认为问题源于两个项目之间的目标依赖关系。 一个快速的解决方法是:使用新的Scheme“ARDroneEngine> xxx的iPhone”再次编译ARDroneEngine,并在Xcode中为我的iPhone启动FreeFlight。

但我想要一个更完整的解决方案,包括项目之间的依赖关系。如果需要更多信息来解决问题,我可以随时提供新信息。

谢谢, 史蒂芬

1 个答案:

答案 0 :(得分:1)

Xcode对这类案例的解决方案是使用包含两个项目的工作区:然后,当一个项目有一个引用另一个项目的构建产品的目标时,它会自动计算出依赖项并按顺序构建它们。

  1. 创建新工作区(文件>新>工作区);将其命名并将其保存在您喜欢的任何地方(尽管将它放在两个项目目录的父文件夹中可能是个好主意。)
  2. 添加两个项目(将xcodeproj文件从Finder拖到导航器窗格中,或使用文件>添加文件)。
  3. 展开库项目的Products组,以便可以看到(库的)占位符(libARDroneEngine.a)。
  4. 在导航器中选择应用程序项目(FreeFlight)及其在编辑器中的应用程序目标 - 您应该查看目标的摘要窗格(具有包标识符,部署信息,权利,最重要的是, “链接的框架和库”列表)。
  5. 将库(libARDroneEngine.a)从导航器(在步骤3中将其显示)拖动到Linked Frameworks&图书馆清单。
  6. 就是这样!现在您可以选择FreeFlight> xxx方案,它将在构建应用程序之前自动构建库项目。

    您可以在工作区的Xcode帮助中获得有关这些说明的更完整摘要(包括屏幕截图和所有内容)。