xcconfig 指南

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文件

你可能感兴趣的:(xcconfig 指南)