如何在Xcode 4中引用另一个项目?

3
我该如何在XCode 4中引用另一个项目的代码以利用NSDate扩展,详见此处
注意事项如下:
  • 我认为应该引用而不是尝试构建框架
  • 我曾尝试将现有的“Hello World”XCode项目文件复制到我的项目中,但似乎没有起作用
  • 我需要基于“coco touch static library”选项创建一个新的“Target”吗?
  • 然后,我需要编辑当前产品方案,使生成新目标时能够构建
  • 我在我的项目上需要做什么 - 我只需要添加文件并选择扩展Xcode项目文件即可吗?
谢谢。
2个回答

2
我认为我应该引用而不是尝试构建一个框架。是的,引用并链接它,除非你只需要其中一部分。在这个阶段,分离你想要的部分可能是一个高级话题(也取决于库的布局/依赖关系)。你应该优先引用和链接,因为通常会减少维护时间,特别是如果你在多个项目中使用它。
你不需要创建一个项目,而是将库的Xcode项目添加到你的应用程序或库中,将库设置为依赖项,如有必要,将库添加到你的搜索路径中,然后与库链接。
不需要创建新的“基于coco touch静态库”选项的“目标”。
不需要编辑当前产品方案,以便在构建新目标时进行构建。你将其配置为依赖项。如果存在重大冲突,则可能需要更改库的构建设置,这是链接器或编译器会指出的。
在你的项目中,需要按照上述过程开始。

@Justin - 谢谢 - 我不太确定你在 Xcode 中所说的“将库的 Xcode 项目添加到您的应用程序或库中,将库设置为依赖项,如有需要,请将库添加到搜索路径中,然后链接库”指的是什么 - 我现在会在 Xcode 中查看并尝试弄清楚如何做这些事情。 - Greg
@Greg,尝试一下,问问Google,阅读文档,在遇到困难时询问细节。 - justin
@Justin - 在查看了https://dev59.com/-G435IYBdhLWcg3whAWx之后,我又进展了一点。现在我至少可以在Target/BuildPhases/TargetDependencies中看到库,并将其添加到此处。但是,当我有一个“#import "NSDate-Utilities.h"”时,它仍然无法识别此文件。也许在此之前应该有一些前缀吗?或者我需要在Target/BuildPhases的其他3个部分中填充项目? - Greg
如果使用的是 "../3rdpartylibrary/**" "/**" 而不是 "../3rdpartylibrary/**" "/**" $(inherited) 的话,那么可能会导致工具链的混淆,因为这不是正常的做法。完整的写法应该是 "../3rdpartylibrary/**" "/**" $(inherited),但是所有条目都不需要加引号。如果你喜欢的话,也可以转义形式参数分隔符,或者直接使用 UI。如果仍然崩溃:也许删除所有项目的派生数据会有所帮助。 - justin
这次我只是单独添加了"../3rdpartylibrary/",似乎有效了一半。也就是说,#import "NSDate-Utilities.h"的代码行现在没有错误,但是当我尝试使用扩展时,它们似乎并不存在 -例如NSDate.xxx,以及尝试使用头文件中的NSDate类方法,如“dateYesterday”。Justin,你有什么想法吗? - Greg
显示剩余7条评论

1

没有必要引入一个实际的项目。你可以直接带入源文件,甚至可以使用相同的文件而不是复制它们。然而,如果你有超过几个文件,并且你认为你不会经常更改代码,那么创建一个静态库可能是最好的选择。


@dreway - 谢谢 - 作为一个新手,这是否意味着在扩展项目中创建静态库作为新目标,然后构建,在某个地方获取某种库文件(或框架?)并将其手动复制到我的项目中?(即快照) - Greg
是的,您需要使用“Cocoa Touch Static Library”模板在扩展项目中创建一个新目标。这将在“Products”文件夹中创建一个带有“.a”扩展名的新文件。然后,您应该将“.a”文件和所有“.h”文件引入到您的项目中。如果您想在您的代码中使用特定类,则只需导入相应的头文件即可。 - drewag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接