在 Xcode 静态库中包含框架?

Posted

技术标签:

【中文标题】在 Xcode 静态库中包含框架?【英文标题】:Include framework in Xcode static library? 【发布时间】:2010-12-26 21:11:05 【问题描述】:

简而言之:

有没有办法在 Xcode 中创建一个静态库,这样当客户端链接到该库时,它们也链接到该库所依赖的框架?

问题:

我们有一个共享的 Xcode 项目,其中包含多个包含我们所有公共代码的静态库目标。例如,如果一个项目想要使用共享网络代码,他们所要做的就是链接到我们的网络库中。

问题在于这些库似乎没有“包含”它们所依赖的框架。

例如,我们的声音库使用 AudioToolkit.framework。即使 Sound 库在其链接库列表中包含 AudioToolbox.framework,如果客户端不直接与 AudioToolkit.framework 链接,客户端在与 Sound 链接时也会出现链接器错误。

这是一个维护麻烦,因为每次库的框架依赖项发生变化时,我们都必须手动更改所有依赖项目中的链接框架列表。

这应该有效吗?有没有更好的办法?

谢谢!

【问题讨论】:

您好,请问您是否找到了解决方案?我也面临同样的问题。 【参考方案1】:

简而言之:不,静态库只是一堆 .o 文件

解决方案是将您的通用代码重构为“静态框架”,请参阅there 了解可能的解决方案。

【讨论】:

我对该链接的解读是,“静态框架”基本上是一个带有捆绑标头的静态库。如果这是正确的并且静态库不支持我想要的,那么“静态框架”也不会。 同意@Jon-Eric。【参考方案2】:

这个问题的新答案是,是的,有可能:使用 cocoapods! :)

http://cocoapods.org

【讨论】:

以上是关于在 Xcode 静态库中包含框架?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 的动态框架中包含静态库

在动态框架中包含静态库的公共头文件

iOS 静态库 - 是不是可以在我的库中包含 AdSupport.framework?

如何打开框架中包含的视图控制器作为 iOS 的静态库?

在 netbeans 的静态库中包含静态库

我可以在自己的静态库项目中包含现有的静态库吗?