XCode xcconfig编写规则

126 阅读1分钟

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命名规则,仅由大写字母,数字和下划线组成(原则上大写,也可以不)。字符串可以是也可以是'号。

变量有三种特殊情况:

  1. 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不起作用。

  1. 引用变量,$()${}两种写法都可以:
VALUE = Cat
TEACHER = $(VALUE)-$VALUEY
  1. 条件变量,根据SDKArchConfigration对设置进行条件化

例如:

// 指定`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、优先级(由高到低)

  1. 手动配置Target Build Settings
  2. Target中配置的xcconfig文件
  3. 手动配置Project Build Settings
  4. Project中配置的xcconfig文件
  5. Xcode Build Settings对应的xcconfig变量