iOS使用 xcconfig配置文件的若干坑
有一些文章介紹.xconfig文件的使用,如這篇,但是經(jīng)過親自實踐,發(fā)現(xiàn)還是有一些坑,這里記錄下。
構(gòu)建新的configuration
這一步在“project-info-configuration”位置進行,點擊“+”構(gòu)建“-”消除,沒什么問題,這個很簡單也不會出錯。
只是原來使用xcodebuild進行自動打包時的-configuration指的是就是這里啊。每個項目默認就有的Debug和Release配置。
這個Configuration是對于同一個項目的配置的一個完整的最高的總結(jié)了。
使用.xcconfig文件
新建這個文件很簡單,xcode自帶了這個模板。然后是在Configuration里配置,比如在debug時使用First.xcconfig在release時使用Second.xcconfig,如圖:
這一步也簡單。但是我開始使用的時候,思維就走錯方向了:
根據(jù)各種文章的指示,配置文件(.xcconfig)里面的內(nèi)容會覆蓋當前的Build Settings里面的東西,所以我以為是我在配置文件里面寫了一個配置,那么Build Settings里面的東西會跟著變。
比如我現(xiàn)在是Debug環(huán)境,然后對應(yīng)的就是First.xcconfig,我在它里面寫入:
//:configuration = Debug OTHER_LDFLAGS = -Objcxxx//:configuration = Release OTHER_LDFLAGS = -Objcxxx//:completeSettings = some OTHER_LDFLAGS 復(fù)制代碼其實就是Other Linker flags的配置,可是外面Build Settings里的東西并沒有變。
我就暈了,這到底怎么回事。
這里有兩個坑
這個文件里的配置會優(yōu)先在Configuration里指定的.xcconfig文件里的配置,那要怎么使用.xcconfig文件里的配置?刪掉Build Settings里的配置就好了。Command+delete搞定。
因為.xcconfig配置文件很難寫,主要是各種配置名你記不住,所以就到實際的Build Settings里面去拷貝,就在對應(yīng)的配置項Command+C就有了,所以內(nèi)容就變成了上面那樣,我以為3句話是在不同環(huán)境下起作用的,是互不干擾的,其實是OTHER_LDFLAGS設(shè)了3遍,左后一次生效,最后是啥?空的啊,所以即使刪除了Build Settings里的內(nèi)容也不出現(xiàn),我還以為.xcconfig文件沒起作用!
所以改成:OTHER_LDFLAGS = -Objcxxx然后就有了。
環(huán)境切換配置也跟著切換?
首先使用配置文件的作用就是,在環(huán)境切換后,配置可以跟著一整套的切換,.xcconfig就相當于一個把相關(guān)的配置打包了。
這里就有了另一個坑,或者說理解失誤:
我以為是你在Build Configuration里選擇什么,那么Build Settings里的內(nèi)容會跟著改變。
實際上Build Settings還是原來那樣,改變的是每一項里面的內(nèi)容,比如First.xcconfig配置里寫入OTHER_LDFLAGS = -Objc_first,而Second.xcconfig里寫入OTHER_LDFLAGS = -Objc_second,在外面看到的是這樣的:
每一項配置里面會再分成Debug、Release等不同的Configuration,而不是Build Settings整體切換了。
或者說這是一個結(jié)構(gòu)上的問題,讓新接觸者會改不清楚Xcode到底是什么做到不同情況使用不同配置的。
整個配置的結(jié)構(gòu)
實際結(jié)構(gòu)是這樣:
- 最上層就是Project-info-Configuration里的配置了
- 然后每個配置里可以有不同配置文件(.xcconfig),每個target一個配置文件
- 然后是每個配置文件里面有許多的配置項
但是在Build Settings的顯示里,這個結(jié)構(gòu)是倒過來的:
- 配置文件
- 配置項
- 不同Configuration
另外,關(guān)于宏
在整個Build Settings里,可以在代碼里直接使用的,Preprocess Mcros就是其中之一。
在這里定義不同的宏,就可以在代碼里由此做不同處理,比如默認的DEBUG宏就經(jīng)常用來做條件編譯。
在Build Settings里可以$(xxx)來引用其他配置里的東西,那么也就可以在這里定義宏并且跟隨其他配置而改變。
總結(jié)
以上是生活随笔為你收集整理的iOS使用 xcconfig配置文件的若干坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 5064: B-number
- 下一篇: WPF中桌面屏保的制作(主要代码)