Xcode:哪些文件需要成为我的目标的成员? (目标会员)

问题描述 投票:0回答:4

我正在 Xcode 4.6.2 中开发一款 iPhone 应用程序,该应用程序只有一个目标,并且我注意到一些重要文件不是我的目标的成员。我的自定义标头文件都不是目标成员资格的一部分,我的 Info.plist、我的 Prefix 标头或产品“MyApp.app”也不是。

按照我理解目标的方式,这些文件当然需要是目标的成员。

我的问题是:为什么这些文件不是我的目标成员?

在搜索了SO之后,类似的问题已经产生了一些见解,但不是该问题的完整答案。我收集到的见解是:

  1. 头文件不是目标的成员,因为它们在“复制头文件”构建阶段被链接。

    • 这听起来很合理,但我没有复制标头构建阶段
  2. Info.plist 和 Prefix.pch 不是目标的成员,因为 Info.plist 在“复制捆绑资源”构建阶段进行链接,并且 Info.plist 包含指向前缀标头的键/值条目(前缀.pch)

    • 我不确定这实际上是如何运作的
ios xcode
4个回答
17
投票

头文件是其他源文件引用的内容,以便它们知道类的接口是什么。它们不需要作为二进制文件本身的一部分,因此不需要包含在最终产品中。

Info.plist
是一种特殊情况,因为它定义了应用程序包本身,因此需要单独处理。

一般来说,您希望文件在以下情况下成为目标的成员:

  • 形成可执行文件的一部分(例如实现 (
    .m
    ) 文件或库),或者
  • 作为文件包含在应用程序包中(例如图像)。

如果文件仅用作构建过程的一部分并且在运行时不需要,则不需要它们成为目标的成员。通常这是任何类型的头文件,包括预编译头文件 (

.pch
)。


3
投票

只有

.m
文件和资源文件是目标的一部分,而不是
.h

你是对的:Info.plist 文件和标头都在构建设置中引用(这又是特定于目标的)。


3
投票

仅需要为框架目标复制标头,并且只是因为它们是框架版本的一部分(它们允许用户知道如何使用框架)。应用程序不需要标头,因为它们是编译的独立实体。标头(和 pch 文件)在编译期间使用,但在运行时不需要。

info.plist 的处理方式不同。它通常不能被复制,因为在项目中它通常不被称为“Info.plist”。该文件也必须存在于应用程序中,因此 Xcode 不会为您提供不包含该文件的选项。


0
投票

这是我的答案,希望对任何人都有帮助,因为我花了几个小时寻找解决方案。 我正在构建一个基于 SDL2 的游戏,我必须在 SDL2 框架的“构建设置”下设置“跳过安装:是”。

© www.soinside.com 2019 - 2024. All rights reserved.