有没有办法在 Xcode 9 中更改每个方案的 .xcconfig 文件?

Posted

技术标签:

【中文标题】有没有办法在 Xcode 9 中更改每个方案的 .xcconfig 文件?【英文标题】:Is there a way to change .xcconfig files per scheme in Xcode 9? 【发布时间】:2018-01-11 20:08:38 【问题描述】:

我目前有一个项目设置,其中包含一个目标和多个构建配置(DEBUG、STAGING、RELEASE)。每个构建配置都有一个用于一个目标/方案的对应 .xcconfig 文件。我想将项目保持在一个目标,并添加第二个方案,该方案将为 3 个构建配置使用一组不同的 .xcconfig 文件。有没有办法在构建时在每个方案的基础上交换那些 .xcconfig 引用,而不必为第二个方案设置单独的目标?

【问题讨论】:

我不相信有任何方法可以做到这一点,而且您设计的任何方式往往都非常脆弱。通常的解决方案是拥有更多的构建配置。如果你想要两种 Debug,你只需创建 Debug-Options1 和 Debug-Options2 并给它们不同的 xcconfig 文件。这种方法有问题吗? 感谢@RobNapier 的回复。这将从概念验证开始,对于 2 个方案,您的想法将毫无问题。我可以通过这种方法看到的问题是大规模出现的(这是最终目标)——假设一年内我们有 50-100 个计划。我觉得维护所有这些构建配置可能会变成一场噩梦。 50-100 个方案听起来像是一个有问题的方案使用(菜单会让人不知所措)。我会转而查看带有xcodebuild 的命令行构建并通过-xcconfig。超过 50-100 个 IMO 目标,50-100 个方案不会给您带来太多收益。 天哪,好主意 - 我什至没有考虑通过我的 CI 环境来处理这一切。 【参考方案1】:

好的,我想出了这个解决方案,它适用于任何允许您执行后克隆/预构建脚本的 CI 设置:

我创建了 3 个.xcconfig 文件,分别称为Default-DEBUG.xcconfigDefault-STAGING.xcconfigDefault-RELEASE.xcconfig。然后通过 Xcode 将它们与目标的配置相关联。

在克隆后阶段,我有一个脚本,它采用方案的名称,查找匹配的.xcconfig 文件(与方案命名相同),并将其复制以替换适当的默认文件。

【讨论】:

以上是关于有没有办法在 Xcode 9 中更改每个方案的 .xcconfig 文件?的主要内容,如果未能解决你的问题,请参考以下文章

在Xcode中使用GPX模拟位置变化时,有没有办法控制速度?

在 Xcode 9 之前创建的项目中重新组织组和文件夹

在 Xcode Playground 中打印每个数组项?

在Xcode 9中注释多行[重复]

Xcode 在更改时为每个应用程序目标编译情节提要

您可以在 Xcode 4 中批量更改每个文件的编译器标志吗?