在 Xcode 项目中将静态库目标转换为框架目标
Convert a static library target into a framework target in an Xcode project
我有一个生成静态库的 Xcode 项目。我的团队计划在 Swift 进行所有新开发。 It is not possible to add Swift files to the static library project。我们将放弃对 iOS 7 的支持,因此现在可以在我们的 iOS 应用程序中包含框架。因此,我打算将我的静态库项目转成框架项目。
我已经看过,但我找不到任何关于如何执行此转换的工具或建议。静态库很大(100多个.m文件)
我希望得到比创建新的并行框架目标更好的答案。我已经尝试过两次了。第一次作为 swift 目标,但我无法轻松导入所有 Objective C 文件。接下来,作为 Objective C 目标,但是没有 .pch 了。
我看到有人手动创建了框架,创建了一个module.framework文件并复制了一个module.framework/Headers文件夹中的所有头文件。这个解决方案似乎有效,项目可以正确导入文件并将它们正确地视为框架。
我不确定这是解决困难的最佳方法,我正在 ATM 通过 cocoapods 导入静态库的一个大项目上尝试它,但似乎我在可见性方面遇到了一些问题一些 类 使用该框架。
从静态链接库转换static/dynamic链接框架,
- 在您现有的静态链接库项目中添加一个新的 cocoa 触摸框架作为目标。
- 在构建阶段,将所有 .m、.mm、.c、.cpp、.metal 等添加到静态链接框架目标的“\Build Phases\Compile Sources”阶段。
- 把你要暴露的headers放到"\BuildPhases\Headers".
- 对于动态链接框架,请记得检查构建设置中的 Mach-O 类型设置。如果你打算使用swift,你需要确保Mach-O类型被设置为动态库,这样它就会成为一个动态链接框架。对于静态链接框架,您需要将Mach-O类型设置为静态库,但您不能在转换后的静态链接框架中使用swift(仅objective-c、objective-c ++、C++、C等都是允许的)。
然后,对于想要使用此框架的应用程序,只需将 headers 作为 #import 包含在内,并将框架添加到应用程序目标的 "Build Phases\Link Binary With Libraries" 中。如果转换后的框架是动态链接框架,则需要将其放入"Embedded Binaries".
我有一个生成静态库的 Xcode 项目。我的团队计划在 Swift 进行所有新开发。 It is not possible to add Swift files to the static library project。我们将放弃对 iOS 7 的支持,因此现在可以在我们的 iOS 应用程序中包含框架。因此,我打算将我的静态库项目转成框架项目。
我已经看过,但我找不到任何关于如何执行此转换的工具或建议。静态库很大(100多个.m文件)
我希望得到比创建新的并行框架目标更好的答案。我已经尝试过两次了。第一次作为 swift 目标,但我无法轻松导入所有 Objective C 文件。接下来,作为 Objective C 目标,但是没有 .pch 了。
我看到有人手动创建了框架,创建了一个module.framework文件并复制了一个module.framework/Headers文件夹中的所有头文件。这个解决方案似乎有效,项目可以正确导入文件并将它们正确地视为框架。
我不确定这是解决困难的最佳方法,我正在 ATM 通过 cocoapods 导入静态库的一个大项目上尝试它,但似乎我在可见性方面遇到了一些问题一些 类 使用该框架。
从静态链接库转换static/dynamic链接框架,
- 在您现有的静态链接库项目中添加一个新的 cocoa 触摸框架作为目标。
- 在构建阶段,将所有 .m、.mm、.c、.cpp、.metal 等添加到静态链接框架目标的“\Build Phases\Compile Sources”阶段。
- 把你要暴露的headers放到"\BuildPhases\Headers".
- 对于动态链接框架,请记得检查构建设置中的 Mach-O 类型设置。如果你打算使用swift,你需要确保Mach-O类型被设置为动态库,这样它就会成为一个动态链接框架。对于静态链接框架,您需要将Mach-O类型设置为静态库,但您不能在转换后的静态链接框架中使用swift(仅objective-c、objective-c ++、C++、C等都是允许的)。
然后,对于想要使用此框架的应用程序,只需将 headers 作为 #import 包含在内,并将框架添加到应用程序目标的 "Build Phases\Link Binary With Libraries" 中。如果转换后的框架是动态链接框架,则需要将其放入"Embedded Binaries".