繁体   English   中英

为OS X创建静态框架

[英]Creating static framework for OS X

通过使用温和的hack ,可以为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复制到Contents / Library中,它应该被加载,一切都应该工作。

我希望这有帮助。

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

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

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

如果您希望开发人员能够轻松使用您创建的库,则可以选择以下几种方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM