gpt4 book ai didi

ios4 - 如何在Xcode 4中获得隐式依赖关系以与工作区一起使用?

转载 作者:行者123 更新时间:2023-12-03 08:49:49 25 4
gpt4 key购买 nike

我想使用Xcode 4和Cocoa Touch Static Library项目管理工作区中的项目,这些项目包含可以从其他项目中引用的共享代码。根据WWDC 2010视频和Xcode 4文档,Xcode 4中存在一个针对工作区的“隐式依赖项”功能。我一直在努力使其发挥作用,但并没有取得太大的成功。

示例工作区:DependenciesInXcode4.zip

您可以看到非常基本的示例项目有2个静态库项目,我分别命名为Library1和Library2。然后,在每个项目中都有一个类,该类是从iPhone项目中称为PrimaryApp引用的。添加导入语句时,我会从Code Sense获得支持,但是构建失败。

您可以看到构建失败的原因,因为它找不到依赖项。

为了解决这些问题,我添加了手动链接Library1和Library2项目的链接。

我还必须将这些项目的路径添加为Header Search Paths。

现在,当我构建两个依赖关系库,然后在iPhone Simulator中运行PrimaryApp时,它将成功构建并运行。我发现它并不总是确保在必要时构建依赖项项目,这显然是手动过程。这不是我认为的“隐式依赖项”,因为Xcode视频和文档暗示它应该可以工作。我一直在寻找更具体的例子,但到目前为止我还没有运气。即使在Stackoverflow上,我也看不到满意的答案。

  • How should I manage dependencies across projects in an Xcode workspace?
  • What's the correct way to configure XCode 4 workspaces to build dependencies when needed?

  • 似乎开发人员退回到了旧技术,而不是真正使用新的“隐式依赖”功能。

    在理解如何使“隐式依赖项”与Xcode 4中的工作区一起使用方面,我将不胜感激。

    这是我的问题:
  • 应该如何在带有工作区的Xcode 4中使用“隐式依赖项”?
  • 为什么无法在PrimaryApp中自动找到Libary1和Library2中的代码?
  • 是否需要进行其他更改才能使依赖项在工作空间中工作?
  • 最佳答案

    我刚刚花了两天的大部分时间来构建和重建我们的项目,只是为这个问题而苦苦挣扎。尽管我现在有一个可以正确构建和链接并具有正常代码含义的项目,但我对其中的一个步骤并不满意,因为它似乎有点破烂,而且肯定不符合我的“自动隐式依赖项”的概念。 。

    FWIW以下是我采取的步骤:

  • 在Xcode中创建一个新的工作区。
  • 将新项目添加到静态库的工作区中。您还可以添加一个现有项目,我发现它也可以工作。
  • 测试库是否按预期构建。
  • 将新项目添加到主项目的工作区中。再次,我设法添加了一个现有的,但重要的是它没有任何链接到该库的构 build 置。如果添加新项目,只需将现有的源文件添加到其中就很容易了。我的情况特别复杂,因为我不想重组一个非常大的SVN存储库。
  • 在此阶段,我将假设您的源代码已经包含来自静态库的 header 导入。
  • 在主项目的构建阶段中,展开“带有库的二进制链接”部分,然后单击+符号。从静态库项目中选择目标。
  • 如果您想在此阶段构建主项目,以确认其失败,如OP屏幕截图所示,并且头导入错误为“No such file ...”。
  • 现在这是我不太喜欢的地方。在您的主项目中,创建一个新组,并将其称为Dependent Headers或其他名称。现在,在项目导航器中,将所有已使用的标题从您的静态项目拖到该新组中。在弹出的选项中,我只是将其保留为默认设置。
  • 您可能还需要将主项目链接到静态库使用的任何依赖库。例如,我的静态库使用libxml2和CFNetwork,即使我的主项目没有直接使用它们,如果不将它们添加到“库的链接二进制文件”构建阶段,我也会遇到编译错误。
  • 您的主项目现在应该(希望)构建。

  • 我真的不喜欢第8步和第9步。这真的感觉像XCode没有按照广告宣传的那样做。但是,一旦修复,至少可以轻松撤消这些步骤,以使其正常工作。

    我认为“隐式依赖项”应该可以工作,而无需经过第6步甚至第5步,但这对于许多人来说可能有点太不可思议了。

    关于ios4 - 如何在Xcode 4中获得隐式依赖关系以与工作区一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5534235/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com