cocoa - 如何并行处理 Cocoa 应用程序和插件?

标签 cocoa xcode git workflow

我有一个相对简单的目标:我想创建一个本身没有太多功能但可以通过插件扩展的 Cocoa 应用程序。此外,我想开发一些插件,为用户提供真正的功能(和工作示例)。

由于我计划将应用程序和每个插件单独的开源项目(和 Git 存储库),我现在正在寻找组织我的文件和 Xcode 项目的最佳方式。我对 Xcode 不是很有经验,现在我没有看到一种在构建后不复制文件的情况下让它工作的简单方法。

这是迄今为止我用于开发的简单单体设置: 只有一个 Xcode 项目有多个产品:

  • 主要应用
  • 插件开发框架
  • 几个插件包

我正在寻找的是一种将它们拆分为多个 Xcode 项目(一个用于应用程序和框架)和一个用于每个插件的舒适方法。由于我的应用程序仍处于开发的早期阶段,我仍在更改应用程序和插件中的很多内容。所以我所说的“舒适” 的意思是,我不想手动复制文件或类似的不便。

我需要的是插件项目知道在哪里可以找到当前的开发框架,应用程序需要知道在哪里可以找到开发插件。最好的是项目间依赖关系,但我找不到在 Xcode 中设置类似内容的方法。

我想到的一个可能的解决方案是在“复制文件构建阶段”中将两者(插件和框架)复制到一个已知位置,例如/tmp/development,因此不会混淆生产和开发文件。

我认为我的解决方案就足够了,但我很好奇是否有更好的方法来实现我想要的。欢迎提出任何建议。

最佳答案

首先,不要像您提到的那样使用静态“已知位置”。我从事过此类项目;这是皇家的痛苦。一旦您需要项目的几个不同副本(用于并行修复错误,用于测试“干净”构建与您的最新更改,用于在多个分支上工作),构建就开始破坏每个其他,你会发现自己必须比你想要的更频繁地进行完全清理/构建。

您可以通过添加依赖项目(添加文件)来创建项目间依赖关系,右键单击目标并选择“获取信息”,然后在常规 Pane 中添加直接依赖关系。

在结构上,既可以把主app和framework放在一起,也可以放在单独的项目中。在任何一种情况下,我都建议使用如下目录树:

/MyProject
    /Framework
    /Application
    /Plugins
        /Plugin1
        /Plugin2

然后项目应该通过相对路径相互引用。这意味着您可以轻松地并行处理项目的多个副本。

您还可以查看更改到每个目录并运行“xcodebuild”的顶级构建脚本。我不喜欢复杂的构建脚本(我们有一个;它称为 Xcode),但如果它所做的只是在需要时使用参数调用“xcodebuild”,那么一个简单的构建脚本就很有用。

关于cocoa - 如何并行处理 Cocoa 应用程序和插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001230/

相关文章:

ios - Xcode 8 Beta Interface Builder Cocoa Touch 工具错误

iphone - 忽略来 self 自己的应用程序的传入 MIDI

ios - 使用 AVPlayer 实现流畅的视频擦洗

c - Xcode 中的 Git 忽略

git - 高度耦合的 git 子模块

git - 将大型 SVN 存储库迁移到 Git 失败的内存不足异常

git - 从 master rebase 时推送分支

objective-c - 构建自定义小部件,例如 Safari 的 URL 栏

cocoa : cocoa 与 python

objective-c - EXC_BAD_ACCESS [NSTableView _dataSourceValueForColumn :row:] in Mavericks only