在命令行工具中使用框架

我已经使用Cocoa在Xcode中构build了一个命令行工具(Foundation工具)。 该工具使用第三方框架。

在Xcode中一切正常,但我该如何部署这个程序?

如果我从Finder运行应用程序,它不能find库,因为它正在寻找../Frameworks/etc. 我可以静态链接到第三方框架?

不幸的是,在OS X中没有办法将一个框架与一个命令行实用程序捆绑在一起,我怀疑你所链接的框架希望捆绑在应用程序包的框架/目录中。 如果您有权访问框架源代码,则可以编译静态库并将其静态链接到您的应用程序(或将源代码直接包含在应用程序目标中)。 如果您没有源代码,或者由于某种原因不想静态链接库,则还有两个选项:

  1. 如果您有权访问系统范围/ Library / Frameworks文件夹,则可以在此处安装第三方框架。 这要求在构build时将框架的安装path( INSTALL_PATH构build设置)设置为/Library/Frameworks ,或者使用install_name_tool将框架安装path更改为/Library/Frameworks (如果您没有框架的源代码码)。

  2. 使用命令行工具作为应用程序包的可执行文件(例如,在AppBundle.app/Contents/MacOS/)中构build一个应用程序包(就像构buildGUI应用程序一样)。 然后,您可以将第三方框架复制到应用程序包的框架目录中。 然后,您可以将应用程序捆绑到您想要的任何位置,并创build一个命令行实用程序的符号链接。

选项1绝对是更被接受的方法,但是当有一个有效的原因时我使用了选项2。

您可以在Apple的“ 框架编程指南”中find关于构build,链接和安装框架的更多信息。

另一种方法,如果你有框架的源代码,就是添加一个静态库目标,并从中build立一个静态库。 然后,您可以静态链接到您的命令行工具。