Xcode 9:将静态框架与另一个静态框架链接起来

本着Xcode 9的“革命性”特性,即编译静态框架的精神,我们试图使我们的子项目构建为静态框架,因此它们可以静态链接到主应用程序目标。

我们的一个子项目有一个静态框架依赖本身(Firebase)。 当我们将子项目构建为动态框架时,一切正常,但是一旦我们将其切换到mach-o staticlib,突然失去了Firebase库符号。

以下是nm的输出,分别用于构建我们的子项目作为动态vs静态框架:

动态:

00000000001c3450 S _OBJC_CLASS_$_FIRApp

静态的:

                 U _OBJC_CLASS_$_FIRApp

问题在于,这两种情况下框架都“成功”建立,但是一旦与其他目标(例如测试目标)相关联,就会抱怨丢失符号。 当它本身是静态框架时,我们如何确保Firebase框架中的所有符号都嵌入到子项目中? 我们尝试了-all_load-all_load -ObjC器标志没有用...


免责声明:仍然在寻找最终答案。

在更多地使用静态框架之后,我现在意识到它们不会被链接器自动合并,与合并到可执行/动态目标中的方式相同。

无论如何,我最终将所有静态框架及其子依赖关系链接到主要目标。

应该有一种方法来合并静态框架,而不会使最终框架成为动态库,唉,搜索仍在继续...

链接地址: http://www.djcxy.com/p/76417.html

上一篇: Xcode 9: Linking a static framework against another static framework

下一篇: Wrapping static library in Cocoa Touch Framework