2013-10-07 61 views
36

我希望能有更好的文档此为Xcode的5,但我无法找到任何像样的描述与工作区工作的最佳实践,所以..的Xcode工作区与子项目和项目依赖建立触发

在工作区与几个项目(夫妇框架,1个应用程序)是有可能有Xcode的构建所有依赖项目需要(实测即改变)时的w/o具有以包括在所有依赖项目所有项目?

我宁愿喜欢只是在依赖于它,而不是在它有5-6个子项目项目的框架,因为这是刚刚在导航视图一个烂摊子 - 子项目内部
文件显示在搜索结果中,NavView中的子项目在项目内部以任何理由展开。

但是,不包括项目特定项目取决于我找不到一种方法让Xcode 5如果其中一个依赖关系发生了变化,则自动重新构建框架

回答

5

您可以创建一个建立的所有目标的方案。

+1

嗯..真的 - 但这将是蛮力的方法。我宁愿让Xcode智能地构建所需的依赖关系。 – Jay

8

的XCode 5你必须去

  • 左侧选项卡
  • 在选择项目选择目标在目标部分
  • 然后在构建阶段>目标相关新闻社“+”
  • 选择添加的项目作为目标它将出现在目标依赖项列表中

如果有效,如果需要,构建所有目标依赖关系时将一起构建。

+3

不适用于我 - 如果当前项目所依赖的其他项目不能在* Build Phases *中添加,既不通过** + **也不通过工作区中的其他项目拖放。 – Jay

+0

先尝试将第二个项目拖放到第一个项目上。然后转到Build阶段> Target Dependencies。这里当按下“+”时,你应该看到第二个项目被选中。 – loretoparisi

+0

我在一个工作区中有一个框架和另一个项目,这解决了不构建依赖关系的工作区克隆问题。谢谢 –

43

这个方案的目的是为另一个问题,但也许它填补你的需求。

加入您的子项目到工作区后:

  1. 选择应该在构建阶段“与库链接二进制文件”使用新添加的子项目
  2. 在目标命中+ 按钮
  3. 如果图书馆没有出现点击“添加其他...”
  4. 导航到项目文件(* .xcodeproj)所在的文件夹
  5. 将它标记并点击“打开”
  6. 现在你应该看到的项目文件显示“链接二进制 与库”下
  7. 下的同一选项卡的“目标相关性”,打的+按钮
  8. 现在你应该看到必要的文件
  9. 检查你的并点击“添加”
  10. 再次在“Link Binaries with Libraries”中点击+按钮
  11. 现在你的。一个文件应该显示出来,你可以选择并添加它

现在你正在为你的目标使用选定的库。为需要此子项目的每个目标重复这些步骤。希望有所帮助!对于我来说,没有因为我不能设法依赖添加到它之前...

格尔茨,Tomte

+2

如果隐式依赖关闭关闭,这将不起作用,这会显着减慢索引并在大型工作空间中构建。 –

+1

如果您在使用XCode 7时遇到问题,请参阅[Raspu's Answer](http://stackoverflow.com/a/34202139/616644)。 –

+0

请注意,这是一种将项目引用添加到项目的复杂方式。按照上述所有步骤操作后,尝试从“链接库与库的链接”中删除该项目,并注意在“目标依赖关系”部分仍然有对该项目的引用。这是因为当项目被引入“Link Binaries with Libraries”时,该项目的引用被添加到项目中。您可以在“框架”目录下找到该参考。 – Fostah

-1

考虑迁移到CocoaPods

它不仅将解决您的构建问题,而是与项目复杂如你描述时更新/添加/删除框架,改变目标系统版本和解决依赖和冲突也将缓解你的生活。

而且您的工作将有可能成为仅有的两个项目。

+0

嗯 - 有趣。尽管当我们希望一次加载所有项目时,我无法看到依赖管理如何解决Xcode中的问题。 – Jay

+0

也许当前工作空间中依赖关系的依赖关系和依赖关系非常复杂,Xcode无法正确地决定再次构建什么。 – Rivera

+0

只是很好的旧应用程序层,实际上 - 基础类,模块,应用程序构建在彼此之上。没有周期,没有什么幻想。只是一些项目取决于系统底层的项目。 – Jay

14

为防万一别人在Xcode 7中遇到问题:确保您要添加的项目是子项目而不是打开,然后再添加或删除它。

+1

谢谢你。我发现我还必须关闭另一个使用子项目的项目才能添加它。 (即“确保您想添加为子项目的项目未打开,即使作为另一个项目中的子项目,在您添加或删除它之前”) – Kevin

+1

谢谢您感谢您将我的头发拉出一小时。 –

4

这是从Tomte的答案的。他的方法使我产生了依赖分析错误。这是一个更直接的方法,并解释了为什么Tomte的答案有效:

  1. 单击子项目并将其拖到需要定位子项目的项目中。
  2. 现在应显示选项警报。确保如果需要复制项目未被选中。确保创建组被选中。确保没有选择任何项目的目标。按完成按钮。
  3. 单击刚添加子项目引用的项目。
  4. 单击您想要依赖子项目的目标。
  5. 点击目标依赖条件 +按钮。
  6. 注意子项目的产品列为选项。选择它。

注意,使用Tomte的方法时,当项目被添加到链接二进制与图书馆,创建一个项目引用。该项目参考可以在项目的框架组中找到。

我矛盾,这是否是一个很好的方法还是不行。在我看来,计划方法并不好。我真的很想知道为什么工作区项目默认没有这种关系。

最起码,这应该清理在Tomte的解决方案的魔力。