将静态库目标转换为Xcode项目中的框架目标

我有一个Xcode项目,它生成一个静态库。 我的团队计划在Swift中进行所有新开发。 无法将Swift文件添加到静态库项目中 。 我们正在放弃对iOS 7的支持,因此现在可以在我们的iOS应用程序中包含框架。 因此,我打算将我的静态库项目转换为框架项目。

我看过,但我找不到任何有关如何执行此转换的工具或建议。 静态库很大(超过100个.m文件)。

我希望得到一个更好的答案,而不是创建一个新的并行框架目标。 我试过两次。 第一次作为一个快速的目标,但我无法轻松导入所有的Objective C文件。 接下来,作为Objective C目标,但不再有.pch。

要从静态链接库转换静态/动态链接框架,

  1. 在现有的静态链接库项目中添加一个新的cocoa touch框架作为TARGET。
  2. 在Build Phases中,将所有.m,.mm,.c,.cpp,.metal等添加到静态链接框架目标的“\ Build Phases \ Compile Sources”阶段。
  3. 将要公开的标题放在“\ Build Phases \ Headers”中。
  4. 对于动态链接框架,请记住在Build Settings中检查Mach-O Type设置。 如果要使用swift,则需要确保将Mach-O类型设置为动态库,以使其成为动态链接框架。 对于静态链接框架,您需要将Mach-O类型设置为静态库,但不能在转换后的静态链接框架中使用swift(仅允许使用objective-c,objective-c ++,C ++,C等) 。

然后,对于想要使用此框架的应用程序,只需将标头包含为#import,并将框架添加到App Target的“Build Phases \ Link Binary With Libraries”中。 如果转换的框架是动态链接框架,则需要将其放入“嵌入式二进制文件”中。

我看到有人手动创建了框架,创建了module.framework文件并将所有头文件复制到module.framework / Headers文件夹中。 这个解决方案似乎有效,项目可以正确导入文件并正确地将它们视为框架。

我不确定这是做这件事的最好方法,我正在尝试通过cocoapods导入静态库的一个大项目,但似乎我对某些类的可见性有些问题使用框架。