我正在开发一个iOS应用程序项目,并将json-framework项目添加到工作区.左侧的项目导航器显示两个项目,构建方案选择器也显示两个项目的方案.现在我想从json-framework项目中添加libjson.a目标作为对其他项目中iOS应用程序目标的依赖.预期的结果是,无论何时构建应用程序目标,它都会构建(如果需要)库目标并将应用程序目标链接到它.以下是我尝试这样做的方法:
构建两者作为同一方案的一部分.我尝试这种方式的方法是编辑我的应用程序的方案,将"libjson.a"添加到方案的"Build"部分,并选择"Find Implicit Dependencies"方式.然后我转到我的app目标的目标编辑器,在"Build Phases" - >"Link Binary With Libraries"中,我从工作区库列表中选择"libjson.a".当我随后尝试构建该方案时,我看到它构建了库目标,但构建应用程序目标失败,链接器错误"找不到-ljson的库" - 表明它实际上没有发现库已经构建.实际上,在项目导航器中,库的应用程序项目下的条目仍为红色,表示该文件不存在.
将json目标添加为显式依赖项.要尝试此操作,我不会修改构建方案,而是转到我的应用目标的目标编辑器,然后单击"目标依赖项"下的"添加"按钮.工作区中没有其他项目的目标显示,所以这是一个非首发.
将JSON项目拖到另一个项目中,然后将目标添加为依赖项.这就是我在Xcode 3中所做的.在项目导航器中,我抓住了库项目并将其拖到app项目上.这会显示通常的"添加文件"窗格,我只需单击"完成"即可关闭该窗格.项目导航器中的库项目现在有两个条目:一个位于顶层,另一个位于应用程序项目下.我现在可以使用目标编辑器将库目标添加为应用程序目标的依赖项,并且可以在链接库阶段中无错误地链接它.但它看起来很糟糕:导航器中的同一项目有多个条目.有没有不同的方法来做到这一点?
什么应该被认为是在同一工作区中的不同项目中连接这些目标的"Xcode 4-ish"方式?如果同一工作空间中的多个项目实际上不能彼此交互,那么似乎缺乏.谢谢,格雷厄姆.
我想使用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中使用"隐式依赖"来处理工作空间.
这是我的问题:
我有一个iOS项目,它建立在我们在不同iOS项目中使用的框架项目上.该框架作为xcode项目包含在app项目中.应用程序项目依赖于框架的静态库构建目标.(类似于大多数开源库,如three20)
问题是,如果我在框架源代码中更改某些内容,则在构建和运行应用程序项目时不会重建静态库.
进行干净,然后进行构建并运行更改,这些都是正确编译的.每次我在框架中更改某些内容时进行重建都不是一个明显原因的好方法.
是否有一个我必须更改的设置,以便xcode正确地将我的框架识别为脏并相应地构建它?
我正在使用xcode 4.0.2
我遇到了Xcode的隐式依赖检查和静态库的问题,我认为这是Xcode中的一个错误(并且已经报告过); 我在这里提出它,万一其他人对此有任何想法.简而言之,如果应用程序依赖于静态库,并且修改了作为库组件的源文件,Xcode将重建库但不重新链接应用程序,因此在应用程序中看不到更改.
更具体地说:我有一个包含应用程序项目和静态库项目的工作空间,以便应用程序调用库中的函数(结果在应用程序中可见:例如,函数返回显示在标签中的文本)应用程序).静态库包含在应用程序目标的"Link Binary with Libraries"构建阶段中.从头开始构建会首先构建库,然后按预期构建应用程序(换句话说,Xcode已检测到依赖关系).
现在,如果我修改库源文件中的消息文本,然后单击"构建并运行"按钮,Xcode正确重建库,但无法重新链接应用程序,因此当应用程序运行时,未修改的消息文本是显示.
我在Mac OS X 10.8.2下运行Xcode 4.5.1.在我报告的场景中,应用程序是iOS单视图应用程序,被调用的静态库函数恰好在C++中实现.
目前我知道除了清洁和重建之外没有其他解决方法.还有其他人看过这个,还是有其他见解?提前致谢.
我正在尝试将此框架添加到项目中.我按照这些指示写了这封信:
我确定只打开了一个xcode实例,然后将SocketRocket.xcodeproj文件拖到我的项目中.我将.framework文件添加到链接库,创建了一个复制文件构建阶段,然后将.framework添加到复制文件构建阶段.
这是我尝试构建时遇到的错误:
clang:错误:没有这样的文件或目录:'/ Users/adamhickey/Library/Developer/Xcode/DerivedData/websockettest -fcuhfltporfkitgubwcjukxogzas/Build/Products/Debug-iphonesimulator/SocketRocket/SocketRocket'
这是非常正确的:该目录不存在.
在构建阶段,SocketRocket.framework在Link Binary With Libraries下是红色的.它在SocketRocket子项目的products文件夹中也是红色的.
我一直在谷歌搜索这个错误几个小时,我尝试过的大多数事情都指向我改变Xcode-> preferences-locations中的构建位置.我试过了:
如果我在一个单独的xcode实例中打开SocketRocket.xcodeproj并尝试构建它,那么这四个产品中有3个是红色的.产品包括:libSocketRocket.a,SRWebSocketTests.octest,TestChat.app和SocketRocket.framework.第一个是白色,而后三个是红色.
我假设如果我可以在单独的项目中构建.framework文件,这将解决我的整体问题.但是,我所做的一切似乎都没有任何效果.
请帮忙!我正在使用xcode 4.6.