Xcode 4.2如何将一个项目包含到另一个项目中?

79

我一直在寻找,但找不到一个清晰简单的解释,关于如何将一个XCode项目和它所有的子类添加到另一个项目中。

我在从网上下载的示例项目中经常看到这样的东西,但不知道如何自己做。

XCode中有.h和.m文件、文件夹以及一个全新的项目,以蓝色的XCode项目图标开头,可以展开包含项目中的所有内容。

请问有人能够逐步解释给我,我需要如何将一个XCode项目添加到另一个项目中?我看到了很多像“头文件搜索路径”这样的简短语句,但这并没有告诉我太多。

更新:重新阅读文档后,我意识到要添加的项目必须被拖到父项目的蓝色项目图标上。 普通源代码可以拖到任何地方,但是项目必须拖到项目中。

谢谢!

6个回答

144

当你想要将静态库添加到你的xcode项目中时,这样做非常有意义。这需要完成一些步骤。首先,确保静态库项目没有在XCode中打开。

然后,从Finder中拖动和放置静态库xcodeproj文件到你的应用程序的xcode项目中。 StaticLib

之后,你需要将此库添加到你的应用程序的构建阶段中。点击主项目,选择目标的BuildPhases选项卡。

Build Phases

你将要添加其他项目到Target Dependencies并添加到Link Binary With Libraries部分。

最后,应用程序需要了解你的头文件。因此,你需要将静态库类的路径添加到你的用户头文件搜索路径中。转到Main Target的Build Settings,并搜索Header Search Path。

Header Search Path

这将使您的应用程序知道新的静态库。

有时您需要添加一些其他链接器标志。在Build Settings中搜索Other Linker Flags并添加-all_load-ObjC

Other Linker Flags


26
重要细节,各位:你正在拖动的项目不应该在Xcode中打开。以防有人遇到和我一样的问题。 :) - inket
1
@MobileOverlord,您能否更新一下这篇文章?您的指导非常有帮助,但似乎不适用于XCode 6。当我在构建设置中搜索“用户头文件搜索路径”时,我只能找到“始终搜索用户路径”。 - sunny
@sunny 你需要确保在构建设置中显示“全部”选项,而不仅仅是“基本”选项。你可能已经设置为基本选项了。我会浏览并更新屏幕截图。 - MobileOverlord
1
@MobileOverlord 如果你要在一个与其他开发人员共享的仓库上分享这个项目,你会如何保持头文件路径的相对性? - NYC Tech Engineer
别忘了将路径设置为递归(如果双击路径行,右侧栏中有选项)。 - DanWebster
显示剩余3条评论

7

在添加或删除项目之前,请确保您想要作为子项目添加的项目未打开。


1
谢谢!这对我来说真是救命稻草。 - Vibhor Goyal
@VibhorGoyal 不客气,我之前也曾经遇到过这个问题 :)。 - JP Illanes
1
此外,请确保您没有打开另一个Xcode项目,该项目也将您想要使用的子项目作为子项目。这与打开子项目本身相同,并将阻止该过程成功。 - Mark Coniglio

4

请确保选择“创建组”而不是“创建文件夹引用”。如果您的文件夹是蓝色的而不是黄色的,那么您有一个文件夹引用。文件夹应该是黄色的。


4
你可以将任何xcode-project文件(*.xcodeproj)拖放到所需父项目的项目导航窗格中。
然后,根据您的需要,您可能需要添加目标依赖项。
这是你的意思吗?

我之所以问这个问题,部分原因是因为我尝试拖动.xcodeproj文件,但它没有复制所有的子文件夹。更糟糕的是,当我试图删除.xcodeproj文件再次拖动时,我不小心从磁盘上将.xcodeproj文件删除了!那是一个有趣的日子...... - Alex Stone
这是因为 XCode 项目存储的是文件的引用,而不是实际副本。这就是为什么删除文件会从磁盘上删除原始文件的原因。由于只存储引用,所以子文件夹并不一定被复制(只有在项目中引用时才会)。 - JiaYow
Alex,开始使用GitHub或某个SVN服务。这样你就不会丢失并且可以随便试验。 - Matthew Ferguson

1
从Finder中将Xcode文件拖放到另一个Xcode文件中。 它会要求你复制文件,然后勾选复选框,它将复制到您的项目中。

0

您有两种方法将源代码添加到项目中:

  1. 显式依赖[关于],通过创建具有跨项目引用[关于]目标依赖项
  2. 隐式依赖[关于],如果源代码是同一工作区[关于]的一部分

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