Xcode 9:将静态框架链接到另一个静态框架

4
为响应Xcode 9的“革命性”功能,即编译静态框架,我们正在尝试将子项目构建为静态框架,以便它们可以被静态链接至主应用程序目标。
我们的一个子项目本身有一个静态框架依赖项(Firebase)。当我们将子项目构建为动态框架时,一切正常,但是一旦我们将其切换为mach-o staticlib,则突然失去Firebase库符号。
以下是构建我们的子项目为动态和静态框架的 nm 输出:
00000000001c3450 S _OBJC_CLASS_$_FIRApp

静态:

                 U _OBJC_CLASS_$_FIRApp

问题在于,无论哪种情况,框架都可以“成功”构建,但是一旦它与另一个目标(例如测试目标)链接时,就会抱怨缺少符号。当它本身是静态框架时,我们如何确保从Firebase框架中嵌入到我们的子项目中的所有符号?我们尝试了 -all_load-ObjC 链接器标志,但没有效果...
1个回答

2

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

使用静态框架更多之后,我现在意识到它们不会像合并到可执行/动态目标中那样被链接器自动合并。

无论如何,我最终都会将所有静态框架及其子依赖项与主目标链接。

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


我现在遇到了同样的情况。除了链接到主目标之外,还有其他解决方案吗? - Shiva Reddy
也许可以尝试使用SPM,我还没有找到其他方法。 - Mazyod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接