在Xcode中编译源代码的目的是什么?

时间:2013-06-19 18:04:00

标签: ios xcode

  • 在Xcode中编译源代码的目的是什么?
  • 项目中的每个文件都需要在那里吗?
  • 如果我将文件添加到项目中,那么 每个文件都被添加到编译源。

enter image description here

2 个答案:

答案 0 :(得分:15)

你问了

  

在Xcode中编译源代码的目的是什么?

目的是通知编译器在构建目标的过程中应编译哪些源文件(例如.m文件)。

您可以编辑“编译源”的几个实际示例:

  1. 除了Idles在项目中包含或排除多个目标的来源的示例之外,您可能在“编译源”中排除来源的另一个真实场景是您使用第三方库时(或者提供源代码的类集,但是你想控制在项目中编译哪些源代码。

    例如,如果使用FMDB,则将源代码复制到项目中,但其中包含一个示例fmdb.m文件,该文件说明了如何使用FMDB,但您不希望将其编译为你应用的一部分。您可以(甚至可能希望)从项目中完全删除fmdb.m,但您也可以从编译源中删除该文件,这样您就可以在指尖轻松使用这些类,但它不会被编译为您项目的一部分。

    另一个现实世界的例子是,如果您使用SDWebImage框架并在项目中包含了源代码。但是,您可能不需要MKAnnotationView+WebCache类别,在这种情况下,如果不使用地图和MKAnnotationView类,您可能希望将其从“编译源”中删除。如果您在项目中保留了该项,那么如果您还没有将项目与MapKit.framework链接,则可能会收到链接器警告。如果您没有使用MapKit,那么从编译源中删除MKAnnotationView+WebCache会更容易,并且需要链接MapKit.framework(当您可能不需要它时)。

  2. 另一次使用“编译源”是指您想为某个特定源文件设置编译器标志。例如,如果您有一个ARC项目,但是您有一些非ARC代码。您可以进入“编译源”,选择非ARC .m文件,并按Transitioning to ARC Release Notes 中所述设置-fno-objc-arc标记。

  3. 如果您曾向项目添加过文件,但却意外忽略了选择“添加到目标”选项,则在构建目标时不会编译这些源文件。但是你可以进入“编译源代码”并将这些源文件添加到要编译的文件列表中,然后它们将被包含在目标的未来版本中。

  4. 你问:

      

    项目中的每个文件都需要在那里吗?

    不,只是要编译的每个源文件(例如.m文件)。不是标题。不是资产。只是你想要编译的源代码。

      

    如果我将文件添加到项目中,是否每个文件都会添加到编译源中?

    如果在添加文件时单击“添加到目标”复选框,则.m文件将添加到“编译源”,资源将添加到“复制包资源”等。否则它们将不会

    add targets

答案 1 :(得分:5)

假设您的项目中有多个目标,并且您只想在每个目标中使用一些代码,那么您将根据需要删除/添加内容到编译源。它基本上是在构建目标时将传递给编译器的源代码文件列表。

例如,我可能会设置一个目标,将我的代码的子集A构建到静态库中,然后构建另一个目标,构建子集B,链接到由另一个目标构建的库,并将第一个目标指定为目标因此,如果我构建目标B,Xcode将首先构建目标A.