Xcode 有一套先进的编译系统,但是 Xcode 把所有的编译配置项揉在一个 project 文件中,实在是不方便维护,特别是版本控制,多个人在同一个工程上工作的时候经常碰到冲突。其实这一切都是可以解决的,可以通过 xcconfig
文件来解耦工程设置。
关于 xcconfig 文件
xcconfig
文件是一个用来保存 build setting
键值对的纯文本文件。这些键值对会覆盖 build setting 中的值。所以当你在 xcconfig 文件中配置了的选项在 build settings 中保持默认值就好了(因为是什么都不会起作用了)。
创建 xcconfig 文件
点击菜单 File > New > File...
,在 iOS 的 Other 下面可以看到 Configuration Settings File
,双击或者选中点下一步按钮创建一个文件,给这个文件命名并选择存储位置,然后点击创建就会发现文件创建好了,可以看到创建的文件格式是 .xcconfig
后缀的。
我们一般按照下面的名称创建四个 xcconfig
文件:
-
Application.xcconfig
target 相关配置 -
Shared.xcconfig
Debug 与 Release 共用的配置 -
Debug.xcconfig
Debug 独有的配置 -
Release.xcconfig
Release 独有的配置
xcconfig 文件的使用
点击工程文件,切到 info Tab,定位到 Configurations
选项(实际上这个 tab 下的选项并不多,一眼就瞄到了),点开 Configurations
前面的小箭头,看到了分为 Debug 和 Release,分别点击 Debug 与 Release 选择对应的 xcconfig
文件(Debug 对应 Debug.xcconfig,Release 对应 Release.xcconfig)。然后 Debug 和 Release 的小箭头看到下面的 target,为 target 选择 Application.xcconfig。
如此这般就可以使用 xcconfig 文件来解耦 project 文件中的 build settings 了。
xcconfig的内容
前面讲了 xcconfig 文件的创建与使用,还有一点重要的就是 xcconfig 中的内容怎么去填充?难道一个一个键值对去手写?当然不用如此笨拙。
直接在 build settings 中选中你想要在 xcconfig 中配置的键值对所在行(当然也可以选多行),command + c
复制,然后到 对应的 xcconfig 中去粘贴就好了,就这么简单,记得在 build settings 中改为你想要的值后再复制,你一定会想那我不还得改回去吗?别急,还是选中这行,command + delete
就恢复默认值了,so easy。
可以看一下我的 Shared.xcconfig
中的内容:
而且,这个文件中还可以写注释。
xcconfig 文件的包含引用
你一定奇怪 Shared.xcconfig 怎么没用到?别急,前面提到 Shared.xcconfig 中放 Debug 与 Release 中共享的配置,对,那怎么共享呢?引用————跟代码引用一样:
#include "Shared.xcconfig"
当然,你现在肯定也明白了文件名是可以随便取的,文件也可以随意包含,没错,只要你有合理的组织结构。比如你想把签名相关配置独立出来,那么你把签名配置单独放到一个 xcconfig 文件中也是可以的,然后在需要的地方引用即可。
所以,只要你理解了原理,你爱怎么玩就怎么玩。
自定义的 build setting 键值对
你可能注意到了我的 Shared.xcconfig
最后一行的键值对不是标准的 build setting 键值对,其实它们是一对自定义的键值对,我们也可以在 build settings 中看到我们自定义的键值对:
自定义的有什么用呢?可以在一些预编译脚本中读取自定义的 build setting,有助于我们写出更高质量的脚本。关于预编译脚本我们在另一篇中去讲,本文不多讲,只是提一下。
END
讲了这么多,希望对读者能有帮助。如果文中有谬误请留言指正,不胜感激涕零。
本文采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。允许保持署名及原文链接转载,不得用于商业目的。