将 Cocoa 应用程序和命令行工具组合成一个 App Bundle

Posted

技术标签:

【中文标题】将 Cocoa 应用程序和命令行工具组合成一个 App Bundle【英文标题】:Combine Cocoa App and Commandline Tool into one App Bundle 【发布时间】:2014-07-28 09:30:38 【问题描述】:

如何使用 XCode 将命令行工具和 Cocoa 应用程序组合成一个应用程序?

最后我需要将命令行工具(stdout 和 stderr)的输出显示到 NSTextBox。

【问题讨论】:

目前我手动将命令行工具复制到应用程序包中。有没有办法让这个 XCode 自动管理?这样应用程序的构建会将两者都添加到捆绑包中吗? 您还有另一个构建二进制文件的项目?或者它是一个静态二进制文件?你有一个副本包资源构建阶段? 是的。我目前有两个单独的项目。一个用于命令行工具(静态二进制),另一个包含 Cocoa 应用程序。 【参考方案1】:

拖动二进制项目(或添加)作为主项目的依赖项。这意味着它将始终在主要项目之前构建。

接下来添加一个复制包资源构建阶段(或使用现有的)并将二进制产品从二进制项目中拖入。这会将生成的二进制从第一个构建复制到第二个构建创建的包中。

要运行二进制文件,您需要使用NSBundle 获取其路径,然后使用run it using NSTask

【讨论】:

以上是关于将 Cocoa 应用程序和命令行工具组合成一个 App Bundle的主要内容,如果未能解决你的问题,请参考以下文章

将sed截断x行组合成find命令

模仿 AWS CLI / gcloud 命令行参数

跨不同行的值 - 将它们组合成 1 行

比较全面的gdb调试命令

使用 Cocoa 复制任意文件的推荐方法

将两个系列组合成一个数据框行明智