如何获得隐式依赖关系来使用 Xcode 4 中的工作区?

2024-05-04

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

示例工作区:Xcode4.zip 中的依赖项 http://www.smallsharptools.com/downloads/iOS/DependenciesInXcode4.zip

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

您可以看到构建如何因找不到依赖项而失败。

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

我还必须将这些项目的路径添加为标题搜索路径。

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

  • 我应该如何管理 Xcode 工作区中项目之间的依赖关系? https://stackoverflow.com/questions/5483909/how-should-i-manage-dependencies-across-projects-in-an-xcode-workspace
  • 配置 XCode 4 工作区以在需要时构建依赖项的正确方法是什么? https://stackoverflow.com/questions/5427396/whats-the-correct-way-to-configure-xcode-4-workspaces-to-build-dependencies-when

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

我希望能够帮助您了解如何获取“隐式依赖项”来使用 Xcode 4 中的工作区。

这是我的问题:

  • “隐式依赖项”应该如何在 Xcode 4 中与工作区一起工作?
  • 为什么PrimaryApp中无法自动找到Libary1和Library2中的代码?
  • 是否需要进行其他更改才能使依赖项在工作区中正常工作?

我刚刚花了两天的时间来构建和重建我们的项目,一直在努力解决这个问题。虽然我现在有一个可以正确构建和链接并且具有有效代码感知的项目,但我对其中一个步骤并不是 100% 满意,因为它似乎有点黑客,而且肯定不符合我的“自动隐式依赖关系”的概念。

FWIW这是我采取的步骤:

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

我真的不喜欢步骤 8 和 9。这真的感觉 XCode 没有做它所宣传的那样。但是,如果问题得到解决,至少这些步骤很容易取消,以便它可以正常工作。

我认为“隐式依赖”应该不需要经过第 6 步,甚至可能第 5 步就可以工作,但这对于很多人的口味来说可能有点太神奇了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获得隐式依赖关系来使用 Xcode 4 中的工作区? 的相关文章

随机推荐

  • 使用 PyPy 运行 Python 程序?

    有人告诉我 你可以使用 PyPy 来运行 Python 程序 这要快得多 因为它是使用 JIT 编译器编译的 而不是解释的 以下程序查找数字 600851475143 的最大质因数 import numpy as np nr 6008514
  • jQuery:在 .innerHTML 或 .text 更改时制作动画

    我通过使用 jQuery 动态更改网站上的文本来翻译我的网站 如下所示 span Something in English span mySpan html Something else in Spanish 它效果很好 但是由于文本长度的
  • 当 SSL_get_fd 返回 -1 时,这意味着什么?

    我正在使用 frida 分析一个程序 该程序肯定通过 SSL 连接到某个服务器 当我打电话时SSL get fd 它返回 1 从文档中我看到这意味着ssl不包装套接字 BIO 已明确配置 因为我可以通过SSL get rbio openss
  • scala.collection.Seq 不适用于 Java

    Using 阿帕奇火花2 0 1 Java 7 在 Apache Spark Java API 文档中 DataSet 类出现了一个example http spark apache org docs latest api java org
  • Postgres如何从外部服务器传输所有枚举

    我有两个数据库 我希望能够在它们之间传输数据 因此我想将一个大型模式从一个数据库导入到另一个数据库 其中有枚举的分配 所以我遇到了这里描述的问题SQL 创建具有枚举列的外部表时出错 https stackoverflow com quest
  • 维基百科与 Python

    我有这个非常简单的 python 代码来读取 wikipedia api 的 xml import urllib from xml dom import minidom usock urllib urlopen http en wikipe
  • 将动态子项添加到我的 Firebase 参考网址

    我一直在尝试将子项动态添加到我的 firebase 数据引用 URL 但到目前为止还没有成功 假设我有以下数据结构 MyApp beta signups users fred 邮箱 电子邮件受保护 cdn cgi l email prote
  • Tomcat 连接池与准备好的语句缓存

    从 DBCP 连接池升级到 Tomcat 自己的实现 基于优秀的比较here http tomcat apache org tomcat 7 0 doc jdbc pool html Introduction 我有点困惑为什么他们放弃了这两
  • 使用 Box2d 拖放 UIViews (iOS) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我最近发现了一个很好的教程 用于使用
  • 散点图的连续分位数

    我有一个数据集 我为其绘制了回归图 使用ggplot2 s stat smooth ggplot data mydf aes x time y pdm geom point stat smooth col red 我还想使用相同的方法获得分
  • 汇编-符号标志和奇偶校验标志

    我不明白什么时候设置标志标志 什么时候设置奇偶校验 据我所知 符号标志表示运算结果的符号 0表示正数 1表示负数 那么为什么在下一个代码中 mov al 5 sub al 124 SF为零 结果是负数 关于PF 为什么a和b中设置了PF a
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • 向每个表格单元格添加进度条以显示文件进度 - Java

    当您单击 加密 时 应用程序会对放入表中的每个文件进行加密 我想显示文件加密时的进度 然后 状态 列将从 未处理 更改为 已处理 类似于您查看电子邮件中附加的多个文件的方式 我一直在研究单元格渲染器和 ProgressBarTablecel
  • 企业库 CacheFactory.GetCacheManager 抛出空引用

    我正在尝试将使用 1 1 版本的企业库缓存块的应用程序转换为 2 0 版本 我认为我真正遇到的问题是不同 EntLib 部分的配置被分成几个文件 显然 这曾经是由ConfigurationManager 部分处理程序 但现在已经过时 取而代
  • 何时在 F# 中使用区分联合与记录类型

    在继续讨论复杂的示例之前 我试图先弄清楚 F 的基础知识 我正在学习的材料介绍了区分联合和记录类型 我已经审阅了两者的材料 但我仍然不清楚为什么我们要使用其中之一而不是另一个 我创建的大多数玩具示例似乎都可以在两者中实现 记录似乎非常接近我
  • 有没有可供非开发人员(翻译人员!)编辑资源包的工具?

    我们公司让外部翻译人员翻译我们的软件的做法是 嗯 怎么说呢 cvs co 一些模块 ant Translation export 在这个目标后面有一个自制的 ant 任务 将所有资源包一起导出为一个大的制表符分隔的文本文件 列 不同的语言
  • VC++ 代码 DOM 可以从 VS 插件访问吗?

    Visual Studio IntelliSense for VC 包括 完整 EDG C 解析器 http www edg com location c frontend 英特尔和其他公司也使用 由于插件可以访问 C Code DOM 如
  • BackgroundWorker 如何决定在哪个线程上运行 RunWorkerCompleted 处理程序?

    我试图弄清楚 BGW 在工作完成后如何决定运行 RunWorkerCompleted 处理程序的线程 我的初始测试使用 WinForm 应用程序 在 UI 线程上 我开始bgw1 RunWorkerAsync 然后我尝试开始bgw2 Run
  • 导入 python 模块时如何解决 KeyError?

    我试图从不同的目录级别导入模块 所以我使用了 import os import sys sys path insert 0 os path abspath os path join os path dirname file 但现在我收到这个
  • 如何获得隐式依赖关系来使用 Xcode 4 中的工作区?

    我想使用 Xcode 4 和 Cocoa Touch 静态库项目来管理工作区中的项目 其中包含我可以从其他项目引用的共享代码 根据 WWDC 2010 视频和 Xcode 4 文档 Xcode 4 中的工作区有一个 隐式依赖项 功能 我一直