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

Ios Xcode 9:将一个静态框架与另一个静态框架链接,ios,xcode,static,static-libraries,static-linking,Ios,Xcode,Static,Static Libraries,Static Linking,本着Xcode 9的“革命性”特性,即编译静态框架的精神,我们试图将子项目构建为静态框架,以便它们可以与主应用程序目标静态链接 我们的一个子项目本身有一个静态框架依赖项(Firebase)。当我们将子项目构建为动态框架时,一切正常,但一旦我们将其切换到mach-o staticlib,它就会突然丢失Firebase库符号 以下是将子项目构建为动态与静态框架的nm的输出: 动态: 00000000001c3450 S _OBJC_CLASS_$_FIRApp 静态:

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

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

以下是将子项目构建为动态与静态框架的
nm
的输出:

动态:

00000000001c3450 S _OBJC_CLASS_$_FIRApp
静态:

                 U _OBJC_CLASS_$_FIRApp
问题是,在这两种情况下,框架都“成功”构建,但一旦与另一个目标(例如测试目标)链接,框架就会抱怨缺少符号。当Firebase框架本身是一个静态框架时,我们如何确保Firebase框架中的所有符号都嵌入到out子项目中?我们尝试了
-all_load
-ObjC
链接器标志,但没有成功…

免责声明:仍在搜索最终答案

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

最后,我将所有静态框架及其子依赖项链接到主目标


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

我现在遇到了同样的情况。除了链接到主目标之外,还有其他解决方案吗?也许试试SPM,我还没有找到一种方法