【问题标题】:Integrating (C++) library and consumer app in XCode 9在 XCode 9 中集成 (C++) 库和消费者应用程序
【发布时间】:2018-02-28 01:12:04
【问题描述】:

我创建了一个 C++(静态)库libFoo.a。

我希望在 XCode 中创建一个使用此库的 iOS ObjC 应用程序。

我希望同时拥有这两个项目。这样我就可以修改库代码,重新运行消费者应用程序,它会自动重建库。

我还需要能够单步执行库代码。

  • 我需要创建一个 Xcode 工作区并将两个项目都放入其中吗?

  • 当我构建库并检查“产品”组时,即使构建成功,它仍然显示为红色。这样可以吗?

  • 我如何告知消费者.a 的存在?

    它正在构建到:/Users/pi/Library/Developer/Xcode/DerivedData/Foo-eedjtiwaewussebwzhplgqpllrnx/Build/Products/Debug-iphonesimulator/libFoo.a

    如果我将它硬编码到消费者中,这会给另一个克隆我的代码的开发人员带来麻烦吗?

    有没有“正确的方法”(TM) 来做到这一点?也许构建到一个设定的位置并使用相对路径......

编辑:注释:

  • 创建新工作区
  • 创建一个新的 ObjC 项目并在出现提示时添加到工作区
  • 在项目导航器中拖放myLib.xcodeproj 成为consumer.xcodeproj 的子节点
  • consumer.xcodeproj -> 构建阶段 ->
    • ... 目标依赖 -> {add myLib.xcodeproj}
    • ... 将二进制文件与库链接-> "+" -> { "Add workspace" -> libMyLib.a }

【问题讨论】:

    标签: xcode static-libraries static-linking


    【解决方案1】:

    1) 是的,使用工作区。这样做有很多好处。如果您独立于工作区打开项目,并且一个项目(您的库项目)也包含在另一个项目(您的应用程序项目)中,Xcode 实际上不会第二次打开它。工作区要好得多,因为您可以根据需要构建库,同时保留应用程序项目,或运行库的单元测试。您可能还需要更多基于该库的应用程序。它们与您的库一起在同一个工作区中实时调用,您可以设置用于构建其中任何一个的方案(实际上是它们的任何组合,甚至)。

    2a) 从您的应用项目中删除对库的引用。

    2b) 然后将库项目文件添加到应用程序的项目中(在项目导航器中)。在此步骤中不要选择“如果需要,复制项目”,也不要选择任何项目的目标。按完成按钮。

    2c) 单击应用程序项目并转到构建阶段。单击您希望库成为依赖项的应用程序目标(在目标列表中)(我假设它是您的主应用程序目标,而不是您的应用程序的扩展目标等...)单击目标依赖项中的 + 按钮部分。在列表中选择您图书馆的产品。

    2d) 在 Link Binary With Libraries 部分验证您的库是否存在。如果没有,我发现您可以将其从项目导航器中直接拖到此部分。

    3) 所以我假设您将您的应用程序和库一起发布,是吗?开发人员将看到两个目录作为对等点,一个用于库,一个用于应用程序? library 目录包含与该库有关的所有代码和项目文件,而 app 目录包含应用程序的所有代码和项目文件。工作区通常位于两个目录之外。包含一个 README 文件,说明开发人员应如何将您的库添加到他们自己的应用项目中,尽管我上面描述的内容非常典型,不会让任何人感到惊讶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多