Xcode 多條件編譯xcconfig文件配置指南

什么是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,ArchConfigration 對(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文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容