【问题标题】:Add project dependencies in Xcode在 Xcode 中添加项目依赖项
【发布时间】:2012-03-17 20:32:41
【问题描述】:

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

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

目前,我有两个项目,分别是 ARDroneEngine.xcodeproj 和 FreeFlight.xcodeproj。

ARDroneEngine 是 FreeFlight 的库。截图来了。

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

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

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

谢谢, 史蒂文

【问题讨论】:

  • 那么我希望达到的效果:如果我用新的Scheme编译FreeFlight(例如我的iPhone),它会用新的Scheme重新编译ARDroneEngine并更新文件libARDroneEngine.a跨度>

标签: ios xcode ios-simulator


【解决方案1】:

Xcode 对此类情况的解决方案是使用包含两个项目的 Workspace:然后,当一个项目的目标引用另一个项目的构建产品时,它会自动计算出依赖关系并按顺序构建它们。

  1. 创建一个新的工作区(文件>新建>工作区);为其命名并将其保存在您喜欢的任何位置(尽管将其放在两个项目目录的父文件夹中可能是个好主意)。
  2. 添加两个项目(将 xcodeproj 文件从 Finder 拖到导航器窗格中,或使用文件 > 添加文件)。
  3. 展开您的库项目的 Products 组,以便您可以看到已构建库 (libARDroneEngine.a) 的(占位符)。
  4. 在导航器中选择应用程序项目 (FreeFlight) 并在编辑器中选择它的应用程序目标 - 您应该查看目标的“摘要”窗格(具有捆绑标识符、部署信息、权利以及最重要的是“链接的框架和库”列表)。
  5. 将库 (libARDroneEngine.a) 从导航器(您在第 3 步中使其可见)拖到 Linked Frameworks & Libraries 列表中。

就是这样!现在您可以选择 FreeFlight > xxx 方案,它会在构建应用程序之前自动构建库项目。

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

【讨论】:

  • 我认为您的解决方案可能有效,但现在 libARDroneEngine.a 为红色,所以我猜该文件未成功定位?你知道我怎么能把它加回来吗?谢谢!
  • 在我执行此操作的项目中,库在 Linked Frameworks & Libraries 列表中显示为红色,但它仍然被构建和链接。我猜这归结为 Xcode 的怪异之处。 (或者也许他们的文档有更好的方法?)
  • 它在 FreeFlight 的“链接框架和库列表”中显示为红色。然后我通过更改方案进行尝试。它失败了,因为这两个项目仍然没有链接:(
  • 其实之前没做任何修改就可以了。对于我之前的 AR Drone 项目,当我启动 FreeFlight 时,ARDrone Engine 也将重新构建,如 Xcode 中的状态栏所示。这次 Xcode 很奇怪。
  • 我认为在某些版本的 Xcode 中,我必须重新启动 Xcode 以确保正确加载项目。认为这对于那些试图对抗 Xcode 并浪费时间的人来说可能是一个很好的提示。
猜你喜欢
  • 2011-09-03
  • 2011-07-19
  • 2016-06-11
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 2015-01-31
  • 1970-01-01
相关资源
最近更新 更多