如何将现有的源代码文件正确地添加到我的Xcode项目中?

7
我是iPhone开发的新手,还在熟悉Mac开发环境,包括Xcode。我想将一些第三方代码添加到我的iPhone项目中,但是当我将“现有文件”添加到我的Xcode项目时,会出现一个对话框,其中有太多我不理解的选项,因此我的项目无法工作。当我使用#import headerfilename.h时,我收到了一个构建错误,显示headerfilename.h:没有这样的文件或目录。 < p >alt text http://joecrotchett.com/images/misc/fileadd.jpg< /p > < ol >
  • 有人能向我解释所有这些选项的含义,或者给我提供一些文档链接吗?我很难在苹果的文档中找到任何东西。
  • 我应该选择哪些选项来将现有的源代码文件添加到我的Xcode项目中? 我应该注意的是,我正在尝试添加的源代码文件位于我的project/Classes/frameworkname/目录中。
  • 添加后,我需要在我的项目设置中引用这个新的代码目录吗(例如某种头文件目录变量)?
  • 非常感谢!

    更新:我在苹果开发论坛上找到了以下非常有用的答案/回复,帮助我解决了我的问题...

    简单来说: - 如果您不勾选复制选项,则文件会保留在原地。 - 如果您勾选它,则会将其复制到项目文件夹中。在第一种情况下(似乎是您正在进行的操作),您需要告诉编译器头文件在另一个目录中: - 项目信息 -> 构建 -> 搜索路径 -> 用户头文件搜索路径:添加头文件所在的目录。希望这可以帮助到您。



    你发现了一个最令人困惑的对话框,它是库比蒂诺出现过的最混乱的对话框。Xcode已经有六年了,但这个东西对我来说仍然是个谜。为了达到这一点,我不得不制作许多测试项目,试图逆向工程这个东西的功能。 "复制"框表示它将按原样复制文件到项目中。如果未选中此框,则在构建期间只引用这些文件,并将它们复制为当时的状态。对于源代码,您需要勾选复制框。
    "相对于"对我来说完全是个谜,我无法帮助您解决问题。我通常会将其保留在已设置的状态。它是指相对于磁盘上的位置、Xcode中的排列还是包中的位置?谁知道。最后2个单选按钮似乎意味着它将重新创建您要添加的文件夹的文件夹结构,或者只是在Xcode中放置指向真实文件夹的“虚假”文件夹。这可能是您的问题-您正在添加不全在顶层的源代码,当它去查找时,它没有重新创建层次结构。其他人可能会提供更好的方法,但我会将所有源代码放在一个文件夹中,并使用复制框添加它。然后在Xcode中,您可以创建任何虚假文件夹,并将源文件名放入这些虚假文件夹中。

    https://developer.apple.com/library/ios/recipes/xcode_help-structure_navigator/articles/Adding_an_Existing_File_or_Folder.html - Tom Howard
    4个回答

    4
    这是来自Xcode用户指南的内容:
    项目导航器显示项目、组、文件夹和文件:
    在项目导航器中,您的工作区窗口中的一个或多个项目是最高级别。展开项目的披露三角形以查看项目中的组、文件夹和文件。选择项目以显示项目编辑器,在此处可以查看和编辑项目和目标设置。
    组在项目导航器中显示为黄色文件夹图标。该组不代表磁盘上的文件夹。虽然您可以在Xcode中组织项目以反映磁盘上文件的组织方式,但将文件移入和移出组不会影响磁盘上文件夹的内容,将文件移入和移出文件夹也不会影响项目导航器中的组内容。
    文件夹是对磁盘上文件夹的引用,并在项目导航器中显示为蓝色文件夹图标。项目导航器中文件夹的内容反映了磁盘上文件夹的内容。但是,需要注意的是,除非您已将它们明确添加到项目中(在这种情况下,它们将直接出现在项目下方或组中,以及文件夹中),否则出现在文件夹图标中的文件不是项目的一部分。您可以查看和编辑文件夹中的文件,但要将文件移入和移出文件夹,必须使用Finder。
    项目导航器中的文件是对磁盘上文件的引用。

    2

    我认为通常默认选项是最好的选择。如果你想添加到某个组中,可以在“将项目复制到目标组”上打勾。

    添加后无需更改任何项目设置。

    如果您想添加整个框架代码,请选择“添加现有框架”。


    谢谢,vadkhang,但默认选项对我不起作用。源代码文件出现在我的“组和文件”窗格中,但我似乎仍然无法在项目中使用它们,而不会出现“headerfilename.h:没有这样的文件或目录”的构建错误。 - BeachRunnerFred
    你错了,实际上你需要更改项目设置并在“项目>编辑项目设置>搜索路径”中添加头文件的搜索路径。只是提供信息。 - BeachRunnerFred
    哦,如果你想搜索头文件的话就会出现这种情况。但我认为我们可以很容易地使用添加现有项的功能来同时添加头文件和源文件,对吗? - vodkhang

    0
    如果您想添加一个框架包,只需将其作为一个添加。 添加 -> 现有框架

    谢谢,但我想添加源代码,而不是框架包。 - BeachRunnerFred
    根据苹果的开发许可,您不能在iPhone上使用框架(动态)链接的代码。 - Barry Wark

    0
    将项目复制到目标组的文件夹中(如果需要)
    只有在您希望复制文件时才需要这样做。如果您满意它们现有的位置并且不想复制它们,请不要选择它(这就是我所做的)。
    参考类型:
    对我来说完全是个谜。
    文本编码
    不言自明。
    递归地为任何添加的文件夹创建组,为任何添加的文件夹创建文件夹引用
    将其保留为默认设置,然后以任何您想要的方式组织Xcode项目中的文件夹。
    添加到目标
    如果您向项目添加了其他目标,例如iPhone与iPad版本,则未注意到它默认仅将文件添加到其中一个(随机?)可能会导致头疼。
    此外,请确保在“项目设置”>“构建”>“搜索路径”中将新的头文件目录添加到搜索路径中。我认为这是导致您问题的原因。
    希望这可以帮助您,我记得一开始这让我很困惑。

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