创建依赖于其他静态库的静态库(RestKit)

时间:2013-04-30 11:16:17

标签: ios static-libraries

我按照以下教程创建了一个静态库:

https://github.com/jverkoey/iOS-Framework/#developing-the-framework-as-a-dependent-project

这一切都有效,直到我尝试将RestKit合并到我的静态库中。在那里,我完全迷失了。我应该将RestKit库包含到我的静态库中,还是只包含在将使用我的库的应用程序中?

如果我在我的库中没有包含RestKit,我就无法编译它,因为它依赖于另一个库(RestKit),那么为什么会有解决方法?

我试着到处寻找但是没有找到一个好的一步一步的教程来创建一个静态库,它本身依赖于其他静态库。

2 个答案:

答案 0 :(得分:1)

我做的工作是使用他们的git-submodule指令here将RestKit添加到我的静态库中。然后,我对将要使用我的静态库的项目执行了完全相同的步骤:

  1. 我没有将RestKit添加到Build Phases的“Target Dependency”部分
  2. 我没有将libRestKit.a添加到“Link Binary With Libraries”部分。所有其他参考文献仍然需要添加。
  3. 然后我可以在我的静态库和我的iOS项目中引用RestKit。

    COCOAPODS MEGA HACK

    我能够使用可可豆荚,但只有这是你唯一的cocoapods项目才有效。我在一个工作区中开始使用我的所有项目。然后我让我的单个podfile将RestKit安装到我的静态库以及所有将引用我的静态库的项目。然后,对于我想引用静态库的每个项目,我删除了“链接框架和库”下的窗格引用。然后一切都按预期工作。

    正如您所料,这可能会破坏所有其他pod引用(除非您通过一个静态库管理它们),但它似乎确实有效。

答案 1 :(得分:0)

在问到这个问题后,我终于设法让它在这里工作,如果有人遇到类似的问题,那么这就是:

按照this部分的说明创建一个实际应用。添加库后,将您使用的所有其他库添加到应用程序中。 (在我的情况下,它是RestKit框架,将其添加为子模块而不是cocoapods,就像可可豆荚一样,它无法使其正常工作)。

添加完所有库后,请按照第三方库说明修改应用程序,并对静态库进行相同的修改。

e.g。对于Restkit我不得不添加

-ObjC -all_load

其他链接标志并添加

"$(BUILT_PRODUCTS_DIR)/../../Headers"

到静态库中的标题搜索路径

我仍然无法构建,因为找不到<RestKit/Restkit.h>,所以我需要更改框架的构建顺序,以确保Restkit是在我的库之前构建的。

这是在构建菜单的编辑方案中完成的。确保所有依赖库都位于库的顶部(如果您的静态库或依赖库尚未存在,请使用'+'添加它们)

enter image description here

之后一切都对我有用。我不确定这是否是最好的方法,或者将第三方库包含在统计库中会更好。

更新我在尝试构建我的库时仍然遇到问题,如果有人有更好的解决方案或者可以阐明如何创建依赖于其他框架的静态框架我会很感激