为OS X创建静态框架

通过使用轻微的黑客攻击,可以为iOS创建静态框架。 静态框架使用起来非常方便:它们可以简单地放入新的项目中而无需额外的步骤(如将它们添加到构建中并添加标题搜索路径)。

我最近开始做OS X编程,我注意到的第一件事情是静态框架似乎不可用。 动态框架显然是可用的并且是推荐的,但是因为我想为应用程序使用(而不是安装在/Library/Frameworks )创建一个小型私有框架,所以在新的应用程序项目中使用动态框架仍然需要一些额外的步骤。

在我的理想世界中,我会创建一个静态框架(一个包含头文件和一个编译后的.a文件的框架),将框架拖放到一个新项目上,然后开始编码。 有什么办法可以在OS X上创建这样的静态框架吗?

PS我已经尝试在正常的框架项目中将Mach-O输出类型设置为“静态库”,但我刚刚得到错误Framework target has invalid MACH_O_TYPE value of 'staticlib'.


您可以在Mac OS X上创建动态框架。在动态框架中,您可以将LD_DYLIB_INSTALL_NAME设置为@ rpath / Foo.framework / Versions / A / Foo

如果你有一个应用程序想要链接这个框架,那么你确保你运行的是

  install_name_tool -add_rpath <rpath> <full-path-to-app-binary>

所以如果我有Foo.app

  install_name_tool -add_rpath Foo.app/Contents/Library Foo.app/Contents/MacOS/Foo 

现在,如果你只是将你的Foo.framework复制到内容/库中,它应该被加载并且一切都应该工作。

我希望这有帮助。

可能更简单的是使用带有公共标题的静态库。 当您构建静态库时,您可以让Xcode自动为您复制标题。 在您的目标中,您可以将文件夹添加到搜索路径中。

如果您使用静态库,Xcode将剥离您的应用程序并不真正需要的一些死代码,但会将其编译到静态库中。


静态框架在OS X上并不真正支持。无论如何它们都非常脆弱,并且解决了iOS上存在的特定问题,而不是OS X上的问题。

如果您想让开发人员轻松使用您创建的库,您可以选择以下几个选项:

  • 使用Cocoapods。 他们有一个在CocoaPods上发布你的库的教程。 这可能是在OS X上分发库的最简单方法。
  • 将您的库打包为一个框架。 如果您正确设置安装名称(到@rpath/<library name> ),则下游开发人员只需将框架复制到其Xcode项目中,并将其应用程序的运行时搜索路径设置为@executable_path/../Frameworks )。
  • 链接地址: http://www.djcxy.com/p/13337.html

    上一篇: Creating static framework for OS X

    下一篇: Python string interpolation implementation