什么是xcconfig文件
簡(jiǎn)單來說,xcconfig是蘋果在xcode文件中用來使同一套代碼能夠在不同的條件下編譯,運(yùn)行的一個(gè)配置文件
怎么生成和配置一個(gè)配置文件
-
1.在工程中添加一個(gè)新文件,如圖所示,選中配置文件模板,并且命名
image -
2.在工程配置中配置剛剛添加的文件,你可以配置
1-n個(gè)環(huán)境的xcconfig文件
image 3.現(xiàn)在你可以愉快的使用各種配置開發(fā)了
xcconfig文件語法介紹
- xcconfig的語法比較簡(jiǎn)單,就是簡(jiǎn)單的鍵值配對(duì)語法,如下
BUILD_SETTING_NAME = value
注釋
xcconfig的只支持一種注釋\\-
使用
#include導(dǎo)入其他設(shè)置-
xcconfig文件可以創(chuàng)建多個(gè),可以在xcconfig中根據(jù)需求,將其他xcconfig的配置導(dǎo)入到本文件,通過#include關(guān)鍵字+上對(duì)應(yīng)的xcconfig文件路徑就可以
1.支持絕對(duì)路徑添加
#include "/Users/someone/testxcConfig/testxcConfig/testxcConfig.Debug.xcconfig"2.支持相對(duì)路徑,實(shí)際上就是${SRCROOT}路徑鏈接后面的文件路徑
#include "testxcConfig/testxcConfig.Debug.xcconfig" -
變量
變量定義,按照OC命名,僅又大寫字母,數(shù)字和下劃線構(gòu)成,原則上大寫,但也可以小寫;字符串可以是",也可以';變量有三種特殊情況:
1.在xcconfig定義的變量與Build Setting中的變量相同,那么就會(huì)發(fā)生覆蓋的情況,可以通過$(inherited)關(guān)鍵字繼承Build Setting的值,例如:
OTHER_LDFLAGS = -framework SDWebImage
OTHER_LDFLAGS = $(inherited) -framework AFNetworking
最后的結(jié)果就是 // OTHER_LDFLAGS = -framework SDWebImage -framework AFNetworking
注意:有部分變量不能通過xcconfig 配置到Build Settings,比如 配置 PRODUCT_BUNDLE_IDENTIFIER不會(huì)起作用
2.引用變量 ${}和¥()都可以
VALUE=OC
LANAUAGE=$(VALUE)-${VALUE}
條件變量,根據(jù)SDK,Arch和Configration 對(duì)設(shè)置進(jìn)行條件化
//指定`Configration`是`Debug`
//指定`SDK`是模擬器,還是`iphoneos*或者`macosx*`
//指定生效架構(gòu)是`x86_64`
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*[arch=x86_64]= $(inherited) -framework "Demo"
注意: 在Xcode 11.4 及之后版本,可以知道default,來指定變量為空時(shí)的默認(rèn)值
$(BUILD_SETTING_NAME:default=value)
優(yōu)先級(jí)從高到低
1.手動(dòng)配置Target Build Settings
2.Target中配置的xcconfig文件
3.手動(dòng)配置roject Build Settings
4.Project中配置的xcconfig文件