在XCode 9中集成(C ++)库和消费者应用程序

问题描述 投票:0回答:1

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

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

我希望两个项目并排进行。这样我就可以修改库代码,重新运行消费者应用程序,它将自动重建库。

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

  • 我是否需要创建Xcode工作区并将两个项目都放入其中?
  • 当我构建一个库并检查'Products'组时,即使构建成功,它仍然显示为红色。这个可以吗?
  • 我如何告知消费者.a的存在? 它正在建设:/Users/pi/Library/Developer/Xcode/DerivedData/Foo-eedjtiwaewussebwzhplgqpllrnx/Build/Products/Debug-iphonesimulator/libFoo.a 如果我将其硬编码到消费者手中,这会给另一个克隆我的代码的开发人员带来麻烦吗? 有没有'正确的方法'(TM)来做到这一点?也许建立到一个固定的位置,并使用相对路径......

编辑:备注:

  • 创建新工作区
  • 创建一个新的ObjC项目并在提示时添加到工作区
  • 拖放myLib.xcodeproj成为项目导航器中consumer.xcodeproj的子节点
  • qazxsw poi consumer.xcodeproj建立阶段qazxsw poi ...目标依赖性qazxsw poi {add ->} ...链接二进制文件库->“+”-> {“添加工作区”myLib.xcodeproj ->}
xcode static-libraries static-linking
1个回答
1
投票

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

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

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

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

2d)验证在Link Binary With Libraries部分中,您的库在那里。如果没有,我发现你可以将它从项目导航器直接拖到这一部分。

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

© www.soinside.com 2019 - 2024. All rights reserved.