Xcode有一套先进的编译系统,但是Xcode把所有的编译配置项揉在一个project文件当中,不方便维护,这些可以通过xcconfig文件来解耦工程设置
关于xcconfig文件
xcconfig文件是一个用来保存<code>Build Settings</code>键值对的纯文本文件。这些键值对会覆盖<code>Build Settings</code>中的值。所以当在xcconfig文件中配置了的选项在<code>Build Settings</code>中怎么设置都不会再起作用
创建xcconfig文件
点击菜单<code>File > New > File... </code>,在iOS的Other下面可以看到<code>Configuration Settings File</code>,双击或选中点下一步创建一个文件,给文件命名并选择存储位置,然后点击创建。创建成功的文件格式是<code>.xcconfig</code>后缀的。一般创建按照下面的名称创建四个<code>xcconfig</code>文件:
- <code>Application.xcconfig</code>target相关配置
- <code>Shared.xcconfig</code>Debug与Release共用的配置
- <code>Debug.xcconfig</code>Debug独有的配置
- <code>Release.xcconfig</code>Release独有的配置
xcconfig文件的使用
点击工程文件,切到<code>info</code> Tab,定位到<code>Configuration</code>选项,点开<code>Configuration</code>前面的小箭头,看到了分为<code>Debug</code>和<code>Release</code>,分别点击<code>Debug</code>和<code>Release</code>选择对应的 xcconfig 文件(Debug 对应 <code>Debug.xcconfig</code>,Release 对应 <code>Release.xcconfig</code>)。然后 <code>Debug </code>和 <code>Release </code>的小箭头看到下面的 target,为 target 选择 <code>Application.xcconfig</code>。
结果就是上图所示
xcconfig的内容
前面讲了 xcconfig 文件的创建与使用,还有一点重要的就是 xcconfig 中的内容怎么去填充?难道一个一个键值对去手写?当然不用如此笨拙。
直接在<code> Build Settings</code> 中选中你想要在 xcconfig 中配置的键值对所在行(当然也可以选多行),<code>command + c </code>复制,然后到 对应的 xcconfig 中去粘贴就好了,记得在<code> Build Settings </code>中改为你想要的值后再复制,如果为默认值的话则不可复制。如果需要改回去的话,还是选中这行,<code>command + delete</code> 就恢复默认值了。最终如图所示,文本文件的好处就是可以随意添加注释
另外,在xcconfig文件中也可以添加自定义的键值对,如:
对应的,<code>Build Settings</code>中会增加该键值对:
xcconfig文件的包含引用
至于最初创建的Shared.xcconfig在以上设置时没有用到,那么Debug和Release怎么共享呢,如下直接类似代码引用的方式在<code>Debug.xcconfig</code>和<code>Release.xcconfig</code>使用:
#include "Shared.xcconfig"
后续添加:在实际应用过程中发现,如果更改没有成功,检查<code> Build Settings</code> key的内容是否预先设置为<code>$(inherited)</code>
END