Xcode 5问题,链接到同一项目中的框架

Xcode 5问题,链接到同一项目中的框架,xcode,macos,cocoa,frameworks,Xcode,Macos,Cocoa,Frameworks,我遇到了一个框架链接问题,好几天都无法解决 以下是我正在做的: 在Xcode 5.0.2中,我创建了一个新的框架项目。我删除了与项目一起创建的默认目标、与其关联的文件以及相关方案(因为我想创建自己的方案) 我创建了一个新的框架目标,给它起了一个名字,比如“Test1”,删除了默认的头文件和实现文件,并向它添加了一个新的协议。我建立它,只是为了检查,一切顺利 我创建了另一个框架目标,给它起了另一个名字,比如“Test2”,删除了默认的头文件和实现文件,并向它添加了一个新类 从Test2构建设置,我

我遇到了一个框架链接问题,好几天都无法解决

以下是我正在做的:

  • 在Xcode 5.0.2中,我创建了一个新的框架项目。我删除了与项目一起创建的默认目标、与其关联的文件以及相关方案(因为我想创建自己的方案)

  • 我创建了一个新的框架目标,给它起了一个名字,比如“Test1”,删除了默认的头文件和实现文件,并向它添加了一个新的协议。我建立它,只是为了检查,一切顺利

  • 我创建了另一个框架目标,给它起了另一个名字,比如“Test2”,删除了默认的头文件和实现文件,并向它添加了一个新类

  • 从Test2构建设置,我链接到Test1。我试着去建造,结果却失败了:

    ld: framework not found Test1
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
  • 如果我不包括Test1框架,它将按照预期成功构建(框架不包含在任何文件中,只包含在构建设置中)

    尝试过清理和重建、手动删除文件、从设置中删除框架、库和头路径、重新启动Xcode(甚至是计算机)以及一些我记不起来的其他东西,但都没有用。还尝试了其他SO答案的一些建议,但仍然没有成功

    如果有人知道发生了什么我会很感激的

    谢谢


    编辑:我已经将“目标1”框架添加到目标2的依赖项中。

    您需要将目标2设置为将目标1作为依赖项。为此,请打开目标2“构建阶段”窗格。旋转打开“目标依赖项”。单击“+”按钮添加依赖项,当工作表出现时,选择“目标1”


    完成此操作后,每次构建目标2时,它都将确保构建了目标1,并且位于正确的链接位置。

    您需要将目标2设置为将目标1作为依赖项。为此,请打开目标2“构建阶段”窗格。旋转打开“目标依赖项”。单击“+”按钮添加依赖项,当工作表出现时,选择“目标1”


    完成此操作后,每次构建目标2时,它都将确保构建了目标1,并且位于正确的链接位置。

    您需要将目标2设置为将目标1作为依赖项。为此,请打开目标2“构建阶段”窗格。旋转打开“目标依赖项”。单击“+”按钮添加依赖项,当工作表出现时,选择“目标1”


    完成此操作后,每次构建目标2时,它都将确保构建了目标1,并且位于正确的链接位置。

    您需要将目标2设置为将目标1作为依赖项。为此,请打开目标2“构建阶段”窗格。旋转打开“目标依赖项”。单击“+”按钮添加依赖项,当工作表出现时,选择“目标1”


    完成后,每次构建目标2时,它都会确保构建了目标1,并且位于正确的链接位置。

    好的,事实证明上述内容是不相关的。很抱歉造成混淆(但正确设置依赖项仍然是一个好主意)


    Xcode找不到框架的原因是您没有向其添加任何代码。你只有一个标题。一旦您将.m(或者可能是.c或.cpp或.mm)文件添加到Target1,它就会按预期工作

    好吧,事实证明上述情况是不相关的。很抱歉造成混淆(但正确设置依赖项仍然是一个好主意)


    Xcode找不到框架的原因是您没有向其添加任何代码。你只有一个标题。一旦您将.m(或者可能是.c或.cpp或.mm)文件添加到Target1,它就会按预期工作

    好吧,事实证明上述情况是不相关的。很抱歉造成混淆(但正确设置依赖项仍然是一个好主意)


    Xcode找不到框架的原因是您没有向其添加任何代码。你只有一个标题。一旦您将.m(或者可能是.c或.cpp或.mm)文件添加到Target1,它就会按预期工作

    好吧,事实证明上述情况是不相关的。很抱歉造成混淆(但正确设置依赖项仍然是一个好主意)


    Xcode找不到框架的原因是您没有向其添加任何代码。你只有一个标题。一旦您将.m(或者可能是.c或.cpp或.mm)文件添加到Target1,它就会按预期工作

    谢谢你的回答。我想问一下,除了在“链接二进制文件与库”一节中链接它之外,还有其他内容吗?实际上有什么不同?在依赖项中添加了“目标1”,但没有任何更改。另请参见上面的“我的编辑”。是的,您需要将其添加到依赖项中,并针对其进行链接。将它放在依赖项中可以确保每当重建目标2并且目标1中的某些内容发生更改时,都会重建它。如果您更改了目标1中的某个私有标头,但忘记了重建,然后重建了目标2,即使目标2不知道该私有标头,目标1也会得到重建,因为它自上次创建以来已发生更改。我对您的答案和评论投了赞成票,认为有帮助,但这并不能解决我的问题。谢谢你的回答。我想问一下,除了在“链接二进制文件与库”一节中链接它之外,还有其他内容吗?实际上有什么不同?在依赖项中添加了“目标1”,但没有任何更改。另请参见上面的“我的编辑”。是的,您需要将其添加到依赖项中,并针对其进行链接。将它放在依赖项中可以确保每当重建目标2并且目标1中的某些内容发生更改时,都会重建它。如果您更改了目标1中的某个私有标头,但忘记了重建,然后重建了目标2,即使目标2不知道该私有标头,目标1也会得到重建,因为它自上次创建以来已发生更改。我对您的答案和评论投了赞成票,认为有帮助,但这并不能解决我的问题。谢谢你的回复