我使用Cocoa在Xcode中构建了一个命令行实用程序(Foundation工具).该工具使用第三方框架.
在Xcode中一切正常,但我该如何部署这个程序?
如果我从Finder运行应用程序,它找不到库,因为它正在寻找../Frameworks/etc.
可以在第三方框架中静态链接吗?
不幸的是,没有办法在OS X中使用命令行实用程序捆绑框架,我怀疑您链接到的框架是否希望捆绑在应用程序包的Frameworks /目录中.如果您可以访问框架源代码,则可以编译静态库并将其静态链接到应用程序(或直接在应用程序目标中包含源代码).如果您没有源代码,或者由于某种原因您不想静态链接库,则还有两个选项:
如果您可以访问系统范围/ Library/Frameworks文件夹,则可以在那里安装第三方框架.这要求框架的安装路径(INSTALL_PATH
构建设置)/Library/Frameworks
在构建时设置为或者您使用install_name_tool
更改框架安装路径/Library/Frameworks
(如果您没有框架的源代码).
使用命令行实用程序构建应用程序包(就像构建GUI应用程序一样)作为应用程序包的可执行文件(即在AppBundle.app/Contents/MacOS/中).然后,您可以将第三方框架复制到app bundle的frameworks目录.然后,您可以将应用程序包放在任何您想要的位置,并创建指向命令行实用程序的符号链接.
选项1绝对是更容易接受的方法,但是当有正当理由时我使用了选项2.
您可以在Apple的" 框架编程指南"中找到有关构建,链接和安装框架的更多信息.
另一种方法是,如果你有框架的源代码,那就是添加一个静态库目标并从中构建一个静态库.然后,您可以将其静态链接到命令行工具.