2013-06-19 45 views
4
  • 在Xcode中编译源的目的是什么?
  • 您的项目中的每个文件都需要在那里吗?
  • 如果我将文件添加到项目中,是否每个文件都被添加到编译源文件中 。

enter image description here在Xcode中编译源文件的目的是什么?

+1

呃,如果你没有任何资源,你会编译什么? (提示:打开右侧的“资源管理器”窗格,左侧的“导航器”打开,查看与“源”中列出的文件对应的资源管理器设置。) –

回答

12

你问

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

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

一对夫妇的时候,你可以编辑你的“编译源”的实际例子:

  1. 除了包括或不包括在项目中的多个目标源,另一个真实世界的场景保持空闲的榜样如果您使用的是提供源代码的第三方库(或一组类),但是您想要控制将在您的项目中编译哪些源代码,那么您可能会排除“编译源代码”中的源代码。

    例如,如果使用FMDB,则将源代码复制到您的项目中,但其中包含示例如何使用FMDB的fmdb.m文件,但您不希望将其作为应用程序的一部分进行编译。你可以(也许甚至想)完全从你的项目中删除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. 如果您曾经将文件添加到项目中,但意外忽略了选择“添加到目标”选项,那么在构建目标时将不会编译这些源文件。但是你可以进入“编译源代码”并将这些源文件添加到要编译的文件列表中,然后将它们包含在未来的目标版本中。

你问:

是否在项目中的每个文件需要在那里?

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

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

如果您在添加文件时单击“添加到目标”复选框,.m文件将被添加到“编译源”,并且资源将被添加到“复制软件包资源”等。否则,惯于。

add targets

+1

+1感谢您的惊人答案! – footyapps27

4

说你有你的项目多目标,你想只有部分代码的每一个目标,那么你会删除/添加的东西编译适当来源。它基本上是一个源代码文件列表,在构建目标时将传递给编译器。例如,我可能会设置一个目标,将我的代码的子集A构建到静态库中,然后构建子集B的另一个目标,与另一个目标构建的库链接,并将第一个目标指定为目标依赖关系,这样如果我构建目标B,Xcode将首先构建目标A.

相关问题