Xcode的“:configuration”条件编译指令如何在xcconfig文件中工作?

时间:2017-02-20 22:13:09

标签: ios xcode

复制目标的构建设置并将其作为纯文本粘贴到xcconfig文件中时,会发现输出按每个构建配置的条件分区,例如:

//:configuration = Debug
SETTING = value
SETTING = value
SETTING = value

//:configuration = Release
SETTING = value
SETTING = value
SETTING = value

//:completeSettings = some
SETTING
SETTING
SETTING

有关如何使用“:configuration”指令的一些问题:

  1. 如果我在同一个文件中指定了所有这些设置,那么它是否适用于所有构建配置?

  2. 我认为它们适用于下面设置的,但它们是否适用于空行后的设置?

1 个答案:

答案 0 :(得分:3)

简短回答

评论既不是条件,也不是指令。 它们只是注释,用于阐明后续条目适用于的构建配置。复制目标的完整构建设置时,生成的文本不应在单个xcconfig文件中使用。相反,它可用于提取不同配置文件所需的元素。这些注释使您可以轻松找到特定构建配置所需的设置。

因此,如果将xcconfig文件分配给目标的Debug构建配置,则可以将//:configuration = Debug下的设置复制到该文件,然后根据需要对其进行任何更改。

答案很长

每个目标每个构建配置只能分配一个xcconfig文件。

(您可以在项目的信息编辑器中,在配置下执行此操作,您可以在其中找到配置列表,其中可以扩展每个配置以显示包含项目及其目标的列表。您可以通过从配置文件列表中选择为每个配置分配一个配置文件。列出的配置文件包含您添加到配置文件的所有配置文件。项目。)

指定的xcconfig文件中列出的设置用于构建的构建设置,用于分配给的目标和构建配置组合,它们将反映在构建设置编辑器中Xcode中。构建系统使用配置设置层次结构,用于构建最终应用的设置。

*(您可以在Xcode Build设置编辑器中看到这一点,在Build Settings编辑器的顶部选择全部级别到所有内容。)构建系统启动超出平台的默认值(例如 iOS默认)。这些可以通过项目级别的设置更改,然后通过目标级别的设置更改。 Build Settings编辑器最终列出 Resolved 设置,以便您可以确切地看到将应用哪些设置。)*

按以下顺序应用设置,其中每个后续条目将覆盖以前的设置:

Default -> Project Config File -> Project -> Target Config File -> Target.

因此,如果您在为某个构建配置分配给项目的配置文件中指定了 Valid Architecture ,那么该设置将覆盖默认设置。但是,如果在Xcode的构建设置编辑器中为项目级别的该设置指定了另一个值,则该值将覆盖xcconfig文件中指定的值。接下来,如果xcconfig文件中存在该构建配置的目标条目,则将应用该值,除非它在构建设置编辑器中被目标级别的该设置的值覆盖。 (困惑了吗?: - )

正如我所写,每个目标/构建配置组合只能应用一个xcconfig文件。幸运的是,xcconfig文件可以导入其他xcconfig文件,以便可以将设置组合并为逻辑单元,然后导入到最终的xcconfig文件中,这些文件将分配给目标/构建配置。如果您想了解有关xcconfig文件内容的更多信息,请查看此处: The Unofficial Guide to xcconfig files