相关疑难解决方法(0)

在需要时配置XCode 4工作区以构建依赖项的正确方法是什么?

我的情况很简单,一个包含两个兄弟项目的工作区:一个主(iOS)应用程序和一个构建应用程序使用的几个静态库目标的项目.

这是我如何配置构建:

  • 将主应用程序的构建设置中的"用户标题搜索路径"指向库项目位置(通过源树)
  • 在我的应用程序的主要目标编辑器 - >构建阶段 - >"链接二进制文件库"部分,添加了我想要使用的库产品.
  • 在该计划中,勾选'查找隐式依赖关系'

在清理(并删除派生数据)之后,构建会在构建主项目期间将此错误告诉我:

ld: library not found for -lChipmunk
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

果然,如果我查看新创建的派生数据,唯一找到的目标文件是主应用程序,而不是库.*.o文件的广泛"查找"并没有显示任何相关内容,因此库不会丢失,它们肯定不会被构建.

一些补充要点:

  • 当我在Apple开发论坛上询问过这个问题时,有人建议我在主目标的Build Phases-> Target Dependencies编辑器中添加显式deps.但是,您只能在此处将deps添加到同一项目或子项目中的目标; 在我的情况下,我有应用程序和图书馆项目作为工作场所兄弟姐妹.
  • 如果我在主构建之前手动构建每个库,一切都很好.

更新:

我刚刚想出了一个解决方法,即将所有deps的目标添加到主应用程序方案的"构建"部分.我之前尝试过这个但没有成功,但没有意识到我可以在列表中拖动目标以获得正确的构建顺序.现在,构建在正确的顺序中发生,无论是在干净之后,还是在库或主应用程序源更改之后.

我在这里留下问题,因为手动整理构建订单肯定不是必需的.如何设置东西会有问题.

xcode build xcode4

36
推荐指数
2
解决办法
4万
查看次数

如何在Xcode 4中使用隐式依赖项来处理工作空间?

我想使用Xcode 4和Cocoa Touch静态库项目管理工作区中的项目,这些项目包含我可以从其他项目引用的共享代码.根据WWDC 2010视频和Xcode 4文档,Xcode 4中的工作空间有一个"隐式依赖"功能.我一直试图让它工作,我没有取得多大成功.

示例工作区:DependenciesInXcode4.zip

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

构建失败

您可以看到构建失败的原因,因为它无法找到依赖项.

构建错误

为解决这些问题,我手动链接了Library1和Library2项目.

手动链接

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

手动参考标题

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

看起来开发人员正在回归旧技术而不是真正使用新的"隐式依赖"功能.

我非常感谢帮助理解如何在Xcode 4中使用"隐式依赖"来处理工作空间.

这是我的问题:

  • 如何在工作空间的Xcode 4中使用"隐式依赖"?
  • 为什么不能在PrimaryApp中自动找到Libary1和Library2中的代码?
  • 是否需要进行其他更改才能使依赖项在工作空间中运行?

ios4 xcode4

32
推荐指数
1
解决办法
2万
查看次数

Xcode如何找到隐式目标依赖项?

Xcode有时会自动找到依赖项.当我是那个定义关系的人,当我变得懒惰时,我认为是可以的......

但更多的时候我发现自己面临着一个存在(中等到大尺寸)项目的目标.由于该项目是由其他人制作的,我发现很难理解哪些目标取决于什么,因为并非所有关系都是明确的.

Xcode用于查找此类关系的规则是什么?(我希望我能理解逻辑,所以在我的脑海中运行它并且可能在将来节省一些时间)或者是什么使目标有资格隐含地依赖于另一个?

目标及其创建的产品可能与另一个目标相关.如果目标需要另一个目标的输出以便构建,则说第一个目标依赖于第二个目标.如果两个目标都位于同一工作空间中,Xcode可以发现依赖关系,在这种情况下,它会按所需顺序构建产品.这种关系被称为隐式依赖.

来源:iOS开发者库→Xcode概念→Xcode目标

macos xcode ios

16
推荐指数
2
解决办法
5580
查看次数

项目内部的Xcode项目

我现在正在接受一个正在度假的同事的一些项目.

其他项目已经很好了,但在这个特别的项目中,我在项目中找到了一个项目,就像我猜想的那样使用框架.

那么这项技术的名称是什么?

项目树图像内的项目

如何插入并与之交互?刚进口?

iphone xcode frameworks ios

7
推荐指数
1
解决办法
2635
查看次数

如何在工作区中的两个xcode项目之间共享文件?

我了解了Xcode工作区。我知道如何共享静态库,但是我想在工作区中的两个xcode项目之间共享文件,并且可以一次运行多个目标吗?能否向我提供如何执行此操作的信息。

提前致谢

iphone xcode ios ios-targets

6
推荐指数
2
解决办法
5609
查看次数

Objective-C:不能#import 我的框架

我只是在学习 Objective-C,所以这将是一个非常基本的问题。我创建了一个 Mac OSX Cocoa 应用程序并将其添加到 XCode 4 中的工作区。

我还创建了一个名为“Module”的 Cocoa Framework 项目并将其添加到同一个工作区。默认情况下,XCode 为我创建了一个 Module.h 和 Module.m,我保持不变。

我看过很多关于如何通过进入构建阶段并单击“将二进制文件与库链接”部分中的 + 将框架添加到项目的文章。我已经这样做了,现在在我的主应用程序项目中看到一个工具箱,上面写着“Module.Framework”

所以现在我的下一个问题是 - 我如何#import 到我的主应用程序中?我尝试使用 " 和 < 进行各种组合,但所有尝试都报告为找不到文件。

帮助?:)

编辑:添加了一些屏幕截图

工作区

在此处输入图片说明

macos objective-c

5
推荐指数
1
解决办法
6615
查看次数

标签 统计

xcode ×4

ios ×3

iphone ×2

macos ×2

xcode4 ×2

build ×1

frameworks ×1

ios-targets ×1

ios4 ×1

objective-c ×1