敞开生长之旅!这是我参与「日新计划 2 月更文应战」的第 1 天,点击检查活动详情
写下一些我对xcconfig的了解~
xcconfig是什么?
xcconfig文件是Xcode的装备设置文件(又称构建装备文件或者xcconfig文件),文件扩展名便是.xcconfig,是一个用于界说和掩盖project或者target的特定构建装备的纯文本文件。简略的说,.xcconfig文件便是经过文本方式指定build setting的一种方式。
为什么要用xcconfig?
设想一下,一个工程在团队里由多人共同开发时,如果搭档A修正了build settings的装备提交到git,搭档B也修正了build settings,这时搭档B提交代码时就很简单发生冲突,这时候咱们就能够用Xcconfig文件来解决这个问题了。而且一般比较老练的项目根本都会有自己的.xcconfig文件,这样会更便利管理和修正工程的装备信息。
xcconfig的装备流程
说了半天虚的,现在来到实干环节,如何编写项目的.xcconfig文件并生效到工程呢?咱们开发阶段一般分为测验和正式环境,先创建Debug和Release这两种环境下的.xcconfig文件
生成后在工程目录如下图
然后咱们就能够在生成的.xcconfig文件里增加想要增加的键值对了,.xcconfig文件的语法比较简略,每个装备文件都由一系列键值分配组成,这些键值分配具有以下语法:
BUILD_SETTING_NAME = value
给个demo如下
GCC_PREPROCESSOR_DEFINITIONS
后边跟着,所以在工程中会变成宏界说。
界说完build一下看有没有生效,能够去TARGETS里边最后的User-Defined看看,有就代表键值对增加成功了
这时还没完,因为宏界说还没加进工程!这时去到build Setting的preprocessor Macros选项,增加$(inherited)参数后回车,才会把宏界说引进到工程
GCC_PREPROCESSOR_DEFINITIONS = $(inherited)
这行代码,然后把对应的宏界说姓名和值跟在这行代码后边,用空格隔开,不要换行,宏界说的等号两边也不能有空格,不然会报错导致编译失利!我便是在这里踩坑了,花了很多时间找原因,大家引以为鉴!
最后一步来了!在工程的PROJECT -> Info -> Configurations中,Debug和Release环境均指定对应的.xcconfig文件,如下图
工程中读取宏界说如下:
题外话之我的踩坑之旅:
一开始没有在.xcconfig中加入GCC_PREPROCESSOR_DEFINITIONS = $(inherited)
这行代码,直接在preprocessor Macros里边的放入BasicURL,导致运转工程后读到BasicURL这个宏界说后崩溃了
第二步踩坑是我把BasicURL='\${BasicURL}’
写成BasicURL = '${BasicURL}’
了,对没错,便是等号左右两边留了空格,程序员格式强迫症的毛病=_=,然后构建时掩盖到build setting里的preprocessor Macros时出错了,导致找了半天问题才发现是空格!!!
跋文:
.xcconfig文件之宏界说
在.xcconfig文件设置宏界说的优势是,能够依据不同的环境去履行不同的装备,只要在装备文件中写入对应环境的接口访问地址,以及一些第三方SDK的key装备,就能到达不必因为环境的改变而去更改代码读取数据的接口地址
而宏界说的优先级是:代码中#define界说 > .xcconfig文件设置 > build setting中preprocessor Macros设置