如何获得隐式依赖关系来使用 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 中的工作区? 的相关文章

  • 如何使用 NSAttributedString?

    多种颜色在一个NSString or NSMutableStrings是不可能的 所以我听说过一些关于NSAttributedString http developer apple com mac library documentation
  • UIModalTransitionStylePartialCurl 与 UITabBarController

    这个问题已经被问了很多 例如here https stackoverflow com questions 4494337 partial curl modal transition style while preserving tool t
  • Xcode:如何在应用程序中一次更改所有字体?

    我想知道是否可以同时更改大约 100 个不同视图控制器上的字体 这比一件一件地检查并改变它们要容易得多 有任何想法吗 谢谢你 用户界面文件 xib 是纯文本 您可以将它们加载到编辑器中 在左侧窗格中的 Xcode4 中 您可以右键单击 gt
  • XIB 文件在 XCode 中像 XML 一样打开,但使用 Interface Builder 可以正确打开

    当我在 Xcode 4 中双击 StartWindow xib 文件时 它不会在集成 Interface Builder 中打开 它像 XML 文件一样打开 我可以打开所有其他 xib 文件 它们会按预期显示 我可以通过 打开方式 使用旧的
  • OCUnit 测试在未测试的类中给出错误

    我编写了一个 OCUnit 测试 在 Xcode 3 2 中运行良好 现在在 Xcode 4 中遇到问题 它测试单个静态函数X在班上A 它不调用任何类或函数 库函数之外 唯一需要调用的其他代码是静态构造函数 它初始化两个静态变量 但同样 这
  • UILabel + touchDown

    UILabel可以实现touchdown吗 UILabel是一个子类UIView 它本身是一个子类UIResponder 因此 制作一个响应触摸的标签绝对是可能的 只需创建一个新的子类UILabel并实施以下方法 touchesBegan
  • 在 Interface Builder 中的 View Effects Inspector 中选择 CALayer 有何作用?

    在IB内部 在View Effects Inspector中 有一个设置核心动画层的选项 如果我设置了它会做什么 是否相当于setWantsLayer YES 如果是这样 那么按照苹果文档 https developer apple com
  • 在 iOS 中以编程方式拨打带有访问代码的电话号码

    如何在 iOS 中以编程方式拨打包含号码和访问代码的电话号码 例如 号码 900 3440 567访问代码 65445 UIDevice device UIDevice currentDevice if device model isEqu
  • 如何在 Xcode 4 中使用 .xcconfig 文件?

    我刚刚切换到 Xcode 4 但在使用 xcconfig 文件进行构建设置时遇到问题 我的目标已经在 Xcode 3 中分配了文件 并且已全部设置完毕 标题为 Config file 的列显示在 构建设置 的 级别 视图中 但我不知道如何编
  • 在 While 循环中使用 NSDate

    我想在 While 循环中使用 NSDate date 获取当前日期 我通过这样做来实现这一点 while interval gt 0 0 NSDate currentDate NSDate alloc init currentDate N
  • 帮助手册中的锚点不起作用

    我已经仔细检查了所有内容 希望有人能发现我没有看到的愚蠢错误 我正在尝试为我的应用程序构建一个 Apple 帮助部分 它可以正确地转到登录页面 但是没有一个锚点起作用 登陆页面称为index html另一个页面称为test html它位于p
  • 初始化方法模式

    我在理解它的工作原理时遇到问题 分配 self 从 init 消息返回似乎很奇怪 id init if self super init code here for setting up return self The init方法首先分配隐
  • Xcode 4.x - 使其指向有问题的崩溃行

    每次 Xcode 崩溃时 它都会指向 main m 上的这一行 int retVal UIApplicationMain argc argv nil AppController 我知道 Xcode 4 调试与 3 x 相比很糟糕 但是我如何
  • 我的程序有内存泄漏

    IBAction play2 CFBundleRef mainBundle CFBundleGetMainBundle CFURLRef soundFileURLRef soundFileURLRef CFBundleCopyResourc
  • 使用 UIWebview 导航 Pdf 在 IOS 5 中不起作用

    我最近升级到 Xcode 4 我发现一个运行良好一年多的应用程序现在无法在 Ios 5 下运行 该应用程序在 UIWebview 中导航 Pdf 并使用以下代码移动到其中的任何页面pdf self pdfNavigateController
  • 将 git 与 svn 一起使用的好习惯

    Subversion 几年前就很流行 现在 git 也开始流行 越来越多的人想用 git 取代 Subversion 问题是很多项目都是基于 Subversion 的 所以问题是如何将 git 与 Subversion 一起使用 不要完全取
  • 如何在 iPhone 上实现炫酷的警报/信息叠加?

    我了解如何在我的 iPhone 应用程序中包含标准警报 并且可以使用 确定 或 关闭 按钮将其关闭 请参阅图中的示例 如何制作一个很酷的警报 通知覆盖层 就像 foursquare 应用程序中看到的那样 请参阅图片中的 foursquare
  • pdf文件文本阅读和搜索

    我想从 pdf 文件中读取文本并将文本搜索到 pdf 文件中 这是我知道的链接 这些都帮不了我 使用 Quartz 2D 解析 pdf 时获取文本位置 https stackoverflow com questions 3627745 ge
  • 在 insertMethod 应用程序中使用 Core Data 会崩溃并给出 NSInternalInconsistencyException 并显示错误消息 Context已经有一个协调器

    我正在 xcode 4 2 中的 insertMethod 在 MasterViewController m 类中 实现一个核心数据示例 我的应用程序崩溃了NSInternalInconsistencyException 和错误消息 Con
  • iOS 4.3 上的cameraOverlayView 问题

    我使用带有cameraOverlayView的选择器控制器在相机视图中显示产品的图像 在应用到覆盖层之前 产品图像会调整大小 它在 iOS 4 2 上运行良好 但在 iOS 4 3 上产品图像显示为全尺寸 pickerController

随机推荐

  • 使用 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 中的工作区有一个 隐式依赖项 功能 我一直