cocoa - 在命令行工具中使用框架

标签 cocoa xcode macos

我使用 Cocoa 在 Xcode 中构建了一个命令行实用程序(基础工具)。该工具使用第三方框架。

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

如果我从 Finder 运行应用程序,它无法找到该库,因为它正在 ../Frameworks/etc 中查找。 我可以在第 3 方框架中静态链接吗?

最佳答案

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

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

  2. 使用命令行实用程序构建应用程序包(就像构建 GUI 应用程序一样)作为应用程序包的可执行文件(即在 AppBundle.app/Contents/MacOS/中)。然后,您可以将第 3 方框架复制到应用程序包的框架目录中。然后,您可以将应用程序包放在您想要的任何位置,并创建指向命令行实用程序的符号链接(symbolic link)。

选项 1 绝对是更容易接受的方法,但当有正当理由时我使用了选项 2。

您可以在 Apple 的 Frameworks Programming Guide 中找到有关构建、链接和安装框架的更多信息。 .

关于cocoa - 在命令行工具中使用框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/630911/

相关文章:

objective-c - 覆盖调度命令

swift - 使用 NSTextViewDelegate 和 textViewDidChange 不工作来监听 NSTextView 的变化

swift - Xcode 8 中没有 IOS 10 模拟器

c++ - 在 OSX 上通过 dlopen 打开库时调试崩溃

iPhone XCode - 如何更改应用程序图标下方的标题

objective-c - glReadPixels 到 ImageMagick

swift - 编辑- UITableView 单元格按钮操作委托(delegate)- Swift 4

xcode - 出现编译错误时让 xcode 播放声音

macos - 激活记录-C

eclipse - 如何在 Mac OS X 的 .app 中选择一个文件?