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