Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何并行处理Cocoa应用程序和插件?_Cocoa_Xcode_Git_Workflow - Fatal编程技术网

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

如何并行处理Cocoa应用程序和插件?,cocoa,xcode,git,workflow,Cocoa,Xcode,Git,Workflow,我有一个相对简单的目标:我想创建一个Cocoa应用程序,它本身没有太多功能,但可以通过插件进行扩展。此外,我还想开发一些插件,为用户提供真正的功能(和工作示例) 由于我计划让应用程序和每个插件独立于开源项目(和Git存储库),我现在正在寻找组织我的文件和Xcode项目的最佳方式。我对Xcode不是很有经验,现在我看不到一种简单的方法可以让它在构建后不复制文件的情况下工作 这是迄今为止我用于开发的简单单片设置: 只有一个Xcode项目具有多个产品: 主要应用 插件开发框架 几个插件包 我搜索的

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

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

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

  • 主要应用
  • 插件开发框架
  • 几个插件包
我搜索的是一种舒适的方式,可以将这些项目分成几个Xcode项目(一个用于应用程序和框架),另一个用于每个插件。由于我的应用程序仍处于开发的早期阶段,我仍在更改应用程序和插件中的许多内容。所以我所说的“舒适”是指,我不想手动复制文件或类似的不便

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

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

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

首先,不要使用您提到的静态“已知位置”。我在这类项目中工作过;这是一种巨大的痛苦。一旦您需要项目的两个不同副本(用于并行修复bug,用于测试“干净”构建与最新更改,用于处理多个分支),构建就开始互相破坏,您发现自己必须比您希望的更频繁地进行完全干净/构建

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

在结构方面,您可以将主应用程序和框架放在一起,也可以将它们放在单独的项目中。无论是哪种情况,我都建议使用如下目录树:

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


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

这听起来很合理,所以我一定要试试这个。它很有效!尽管“框架搜索路径”必须更改为
“\”${SRCROOT}\“/../Application/build/${CONFIGURATION}”
。否则将找不到头文件。总之,这并不是一个真正直接的设计,但这是Xcode的一个限制。不过,非常感谢!更多: