如何在Cocoa应用程序和插件并行工作?
我有一个相对简单的目标:我想创建一个本身没有太多功能但可通过插件扩展的Cocoa应用程序。另外我想在几个插件上为用户提供真正的功能(和工作示例)。如何在Cocoa应用程序和插件并行工作?
因为我打算让应用程序和每个插件分开开源项目(和Git仓库),所以我正在寻找组织我的文件和Xcode项目的最佳方法。我对Xcode并不是非常有经验,现在我没有看到一个简单的方法来在构建完成后不复制文件的情况下工作。
这是一个简单的单片设置我用来开发到现在为止: 这里只有一个Xcode项目拥有多个系列产品:
- 主要应用
- 一种插件开发
- 几个插件框架捆绑
我在寻找的是一种舒服的方式将它们拆分成几个Xcode项目(一个用于应用程序n和框架),每个插件一个。由于我的应用程序仍处于开发的早期阶段,因此我仍然在更改应用程序和插件中的大量内容。那么我的意思是“舒服”是,我不想手动复制文件或类似的不便。
我需要的是,插件项目知道他们可以找到当前的开发框架,应用程序需要知道它可以在哪里找到开发插件。最好的方式就像是项目间的依赖关系,但是我找不到在Xcode中设置类似的方法。
我想到的一种可能的解决方案是将“复制文件构建阶段”中的两个(插件和框架)复制到已知位置,例如, /tmp/development
,所以生产和开发文件不会混淆。
我认为我的解决方案就足够了,但我很好奇,如果有更好的方法来实现我想要的。因此,欢迎任何建议。
首先,不要像你提到的那样使用静态“已知位置”。我曾在这种项目中工作过;这是一场皇家的痛苦。只要您需要一些不同的项目副本(用于并行修复错误,测试“干净”构建与最新更改,在多个分支上工作),构建将开始每个项目的副本其他,你发现自己必须做得比你想要的更频繁地完成清理/构建。
您可以通过添加相关项目(添加文件)来创建项目间依赖项,右键单击目标并选择“获取信息”,然后在常规窗格中添加直接依赖项。
就结构而言,您可以将主应用程序和框架放在一起,也可以将它们放在单独的项目中。无论哪种情况,我推荐如下目录树:
/MyProject
/Framework
/Application
/Plugins
/Plugin1
/Plugin2
项目应该通过相对路径互相引用。这意味着您可以轻松地并行处理项目的多个副本。
您还可以查看一个顶级构建脚本,该脚本更改为每个目录并运行“xcodebuild”。我不喜欢复杂的构建脚本(我们有一个;它被称为Xcode),但如果它所做的只是在需要时调用带有参数的“xcodebuild”,那么一个简单的构建脚本就很有用。
这听起来很合理,所以我一定会试试这个。 – Koraktor 2010-01-04 21:36:26
它的作品!尽管“框架搜索路径”必须更改为“”\“$ {SRCROOT} \”/../ Application/build/$ {CONFIGURATION}“。否则,头文件将不会被找到。所有这一切都不是一个非常简单的设计,但这是Xcode的限制。 尽管如此,非常感谢! 更多:http://www.devklog.net/2007/10/07/improving-the-xcode-sub-project-experience-with-scripts-and-wits/ – Koraktor 2010-01-05 20:25:17