Nor*_*man 27 macos xcode cocoa
我使用Cocoa在Xcode中构建了一个命令行实用程序(Foundation工具).该工具使用第三方框架.
在Xcode中一切正常,但我该如何部署这个程序?
如果我从Finder运行应用程序,它找不到库,因为它正在寻找../Frameworks/etc. 可以在第三方框架中静态链接吗?
Bar*_*ark 27
不幸的是,没有办法在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的" 框架编程指南"中找到有关构建,链接和安装框架的更多信息.
从 Xcode 9.3.1 开始,我可以通过将框架设置为 来将框架添加到命令行工具Mach-O Type中Static Library。然后在命令行中target确保将框架添加到Target Dependencies&中Link Binary With Libraries Build Phases。然后,构建的可执行文件就可以毫无问题地运行。
| 归档时间: |
|
| 查看次数: |
11146 次 |
| 最近记录: |