xcconfig文件的语法比较简单,每个配置文件都由一系列键值分配组成,这些键值分配有一下语法:
BUILD_SETTING_NAME = value
注释
xcconfig文件只有一种注释方式"\"
include导入其他设置
在创建xcconfig文件的时候可以根据需求创建多个,也就是说可以通过include关键字导入其他的xcconfig内的配置。如:
include "Debug.xcconfig"
在搜索引入的文件时如果是以"/"开头,代表绝对路径。如:
include "/Users/ws/Desktop/Pods/Target Support Files
/Pods-LoginApp/Pods-LoginApp.debug.xcconfig"
或者通过相对路径,以"${SRCROOT}"路径为开始:
include "Pods/Target Support Files/Pods-LoginApp/Pods-LoginApp.debug.xcconfig"
变量
变量定义按照OC命名规则,仅由大写字母,数字,下划线,组成。字符串可以是 " ,也可以是 ' 。变量有3种特殊情况:
一.在xcconfig中定义的变量与Build Settings的一致,那么会覆盖。可以通过$(inherited)让当前变量继承变量原有值。如:
OTHER_LDFLAGS = -framework SDWebImage
OTHER_LDFLAGS = $(inherited) -framework AFNetworking
// OTHER_LDFLAGS = -framework SDWebImage -framework AFNetworking
**注意:有部分变量不能通过xcconfig配置到Build Settings中,如:配置PRODUCT_BUNDLE_IDENTIFIER不起作用**
二.引用变量,$() 和 ${}两种写法都可以
VALUE=Cat
TEACHER=$(VALUE)-${VALUE}
三.条件变量,根据SDK, Arch, Configration对设置进行条件化,如:
//指定'Configration'是'Debug'
//指定'SDK'是模拟器,还是iphoneos*,macosx*等
//指定生效架构是'x86_64'
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*][arch=x86_64]=$(inherited) -framework "Cat"
**注意:在Xcode 11.4及以后版本,可以使用default,指定变量为空时的默认值:$(BUILD_SETTING_NAME:default=value)**
优先级(由高到低):
1.手动配置Target Build Settings
2.Target中配置的xcconfig文件
3.手动配置Project Build Settings
4.Project中配置的xcconfig文件