为响应Xcode 9的“革命性”功能,即编译静态框架,我们正在尝试将子项目构建为静态框架,以便它们可以被静态链接至主应用程序目标。
我们的一个子项目本身有一个静态框架依赖项(Firebase)。当我们将子项目构建为动态框架时,一切正常,但是一旦我们将其切换为mach-o staticlib,则突然失去Firebase库符号。
以下是构建我们的子项目为动态和静态框架的
我们的一个子项目本身有一个静态框架依赖项(Firebase)。当我们将子项目构建为动态框架时,一切正常,但是一旦我们将其切换为mach-o staticlib,则突然失去Firebase库符号。
以下是构建我们的子项目为动态和静态框架的
nm 输出:
00000000001c3450 S _OBJC_CLASS_$_FIRApp
静态:
U _OBJC_CLASS_$_FIRApp
问题在于,无论哪种情况,框架都可以“成功”构建,但是一旦它与另一个目标(例如测试目标)链接时,就会抱怨缺少符号。当它本身是静态框架时,我们如何确保从Firebase框架中嵌入到我们的子项目中的所有符号?我们尝试了 -all_load
,-ObjC
链接器标志,但没有效果...