1、基本语法
BUILD SETTING NAME = value
2、注释
只有一种注释方式: \\
导入其他xcconfig
在创建xcconfig文件的时候,可以创建多个。可以通过include关键字导入其他的xcconfig内的配置。
#include "Debug.xcconfig"
在引入文件时,如果开头是/符号,代表绝对路径
#include "/xxxx/xxxx/xxx/Debug.xcconfig"
如果是相对路径,一般以 ${PODS_ROOT} 或者 ${SRCROOT} 开头
#include "${SRCROOT}/xxxx/xxx/Debug.xcconfig"
3、变量
变量定义,按照OC命名规则,仅由大写字母,数字和下划线组成(原则上大写,也可以不)。字符串可以是”也可以是'号。
变量有三种特殊情况:
- 在
xcconfig中定义的变量与Build Settings的一致, 那么会发生覆盖。
可以通过 $(inherited),让当前变量继承变量原有值。
例如:
OTHER LDFLAGS = -framework SDWebImage
OTHER LDFLAGS = $(inherited) -framework AFNetworking
//OTHER LDFLAGS = -framework SDWebImage -framework AFNetworking
注意A:有部分变量不能通过
xcconfig配置到Build Settings中,例如:配置PRODUCT BUNDLE IDENTIFIER不起作用。
- 引用变量,
$()和${}两种写法都可以:
VALUE = Cat
TEACHER = $(VALUE)-$VALUEY
- 条件变量,根据
SDK、Arch和Configration对设置进行条件化
例如:
// 指定`Configration`是`Debug
// 指定`SDK是模拟器,还有iphoneos*、macosx:*等
// 指定生效架构为x8664
OTHER_LDFLAGS [config=Debug][sdk=iphonesimulator*][arch=x86_64]=
$(inherited)-framework "Cat"
注意:在
Xcode11.4及以后版本,可以使用defau1t,来指定变量的默认值:
$(BUILD SETTING NAME:default=value)
4、优先级(由高到低)
- 手动配置
Target Build Settings Target中配置的xcconfig文件- 手动配置
Project Build Settings Project中配置的xcconfig文件Xcode Build Settings对应的xcconfig变量