詳解Xcode編譯選項(xiàng)功能
以下所有編譯選項(xiàng)都基于Xcode 4.6。本文基于Apple Xcode文檔、《Professional Xcode 3》、以及Google搜索結(jié)果翻譯而成。我對(duì)于編譯認(rèn)識(shí)較淺。如有解釋不當(dāng)?shù)牡胤秸?qǐng)諒解。在某些翻譯可能會(huì)不恰當(dāng)?shù)牡胤?,都附上了英文原文?/p>
Architectures 架構(gòu)
Additional SDKs
在編譯的時(shí)候需要附加的SDK。
Architectures
支持的處理器架構(gòu)。不同的處理器對(duì)應(yīng)不同版本的iPhone。
其中支持Armv6的設(shè)備為:
* iPhone1
* iPhone3G
* iPod Touch 1
* iPod Touch 2
支持Armv7的設(shè)備為:
* iPhone 3GS
* iPhone 4
*iPad
* The New iPad
* iPod Touch 3G
* iPod Touch 4
支持Armv7s的設(shè)備為:
* iPhone5
iPhone對(duì)于指令集是向下兼容的。高版本的iPhone可以運(yùn)行低版本的指令集。因此要適應(yīng)全系列的iPhone,Architectures應(yīng)選擇Armv6。
Base SDK
這決定了你的app所能支持的iOS最高版本。如果你選擇了iOS6.1,則你的app只能被iOS 6.1.X以下的系統(tǒng)安裝。Xcode默認(rèn)設(shè)置為能夠支持的最新版本。
Build Active Architecture Only
如果此項(xiàng)為YES,則在Xcode會(huì)根據(jù)設(shè)備的版本只將相應(yīng)的Architecture編譯入app。如連接了iPhone4進(jìn)行編譯,Build Active Architecture Only為YES,則編譯時(shí)只會(huì)構(gòu)建Armv7的二進(jìn)制文件。若連接的是iPhone5,則構(gòu)建出Armv7s的二進(jìn)制文件。
這個(gè)選項(xiàng)在Debug時(shí)默認(rèn)為YES,在Release時(shí)默認(rèn)為NO。這使得Debug時(shí)編譯的時(shí)間比Release快,更加方便調(diào)試。
Supported Platforms
app所支持的平臺(tái),有iOS和OSX兩個(gè)選項(xiàng)。
Valid Architectures
app預(yù)期將要應(yīng)用到的架構(gòu)。默認(rèn)與Architectures的值相同。這個(gè)選項(xiàng)讓你可以在編譯的時(shí)候只打包Armv7s架構(gòu),但是兼容Armv6,Armv7。
Build Locations
Build Products Path
產(chǎn)品文件和編譯中間文件的根目錄。產(chǎn)品文件和編譯時(shí)臨時(shí)文件都將放在這個(gè)目錄的子目錄中。
Intermediate Build Files Path
編譯時(shí)臨時(shí)文件的存放位置。編譯中間文件格式為product name+.build,如MyProduct.build。
Per-configuration Build Product Path
Directory path. Identifies the directory that holds temporary files for the active build configuration.
當(dāng)前編譯設(shè)置下的產(chǎn)品存放位置。
Per-configuration Intermediate File Path
Directory path. Identifies the directory that holds temporary files for the active build configuration.
當(dāng)前編譯設(shè)置下編譯時(shí)臨時(shí)文件的存放位置。
Precompiled Headers Cache Path
Directory path. Specifies the directory in which to place precompiled headers. Targets can share precompiled headers by specifying the same value for this build setting.
存放預(yù)編譯頭文件的位置。通過(guò)這個(gè)配置,Targets可以互相共享預(yù)編譯的頭文件。
Build Options
Build Variants
Space-separated list of identifiers. Specifies the binary variants of the product. You can create additional variant names for special purposes. For example, you can use the name of a build configuration as a variant name to create highly customized binaries.
Values:
normal: Use to produce a normal binary.
profile: Use to produce a binary that generates profile information.
debug: Use to produce a binary with debug symbols, additional assertions, and diagnostic code.
此項(xiàng)可以設(shè)定生成產(chǎn)品的變種。您可以創(chuàng)建額外的產(chǎn)品變種作為特殊用途。例如,您可以使用編譯配置文件的名稱來(lái)創(chuàng)建一個(gè)高度定制的二進(jìn)制文件。
Build Variants的值有三個(gè):
normal-用于生成普通的二進(jìn)制文件
profile-用于可以生成配置信息的二進(jìn)制文件
debug-用于生成帶有debug標(biāo)志、額外斷言和診斷代碼的二進(jìn)制文件
Compiler for C/C++/Object-C
選擇使用的編譯器。Xcode自帶有兩種選項(xiàng),Apple LLVM和LLVM GCC。建議使用默認(rèn)選項(xiàng)---Apple LLVM。
Debug Information Format
這個(gè)選項(xiàng)決定了記錄debug信息的文件格式。選項(xiàng)有DWARF with dSYM File和DWARF。建議選擇DWARF with dSYM File。DWARF是較老的文件格式,會(huì)在編譯時(shí)將debug信息寫(xiě)在執(zhí)行文件中。
Generate Profiling Code
是否生成配置代碼。默認(rèn)選擇NO。
Precompiled Header Uses Files From Build Directory
預(yù)編譯build路徑中的頭文件。由于編譯過(guò)程比較耗時(shí),且兩次編譯之間未必會(huì)改動(dòng)所有文件。因此將不會(huì)改動(dòng)的常用文件保留成預(yù)編譯文件將大大減少編譯時(shí)的時(shí)間。建議這一項(xiàng)選擇YES。
Run Static Analyzer
運(yùn)行靜態(tài)分析器。
Scan All Source Files for Includes
掃描include文件所包含的所有源文件。
Validate Built Product
這個(gè)選項(xiàng)決定了是否在編譯的時(shí)候進(jìn)行驗(yàn)證。驗(yàn)證的內(nèi)容和app store的審查內(nèi)容一致。默認(rèn)選項(xiàng)是debug時(shí)不驗(yàn)證,release時(shí)驗(yàn)證,這樣就保證了每個(gè)release版本都會(huì)通過(guò)validate,讓被拒的風(fēng)險(xiǎn)在提交app store之前就暴露出來(lái),減少損失。
注意:
1. 這個(gè)選項(xiàng)只在連接真機(jī)的時(shí)候有效。在使用模擬器時(shí)無(wú)效。不過(guò)我用真機(jī)試了一下,似乎也沒(méi)有檢查出代碼里的私有API。
2. 想手動(dòng)validate,可以在Organizer->Archives里找到需要檢查的Archive,點(diǎn)擊Validate按鈕即可。這樣檢查似乎靠譜些,可以查出私有API等違規(guī)操作。
相關(guān)文章
iOS 中根據(jù)屏幕寬度自適應(yīng)分布按鈕的實(shí)例代碼
這篇文章主要介紹了iOS 中根據(jù)屏幕寬度自適應(yīng)分布按鈕的實(shí)例代碼,本文給大家分享兩種方式,代碼簡(jiǎn)單易懂,需要的朋友可以參考下2016-11-11iOS自定義轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的幾種情況
這篇文章主要給大家介紹了關(guān)于iOS自定義轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的幾種情況,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06IOS HTTP請(qǐng)求的常見(jiàn)狀態(tài)碼總結(jié)
這篇文章主要介紹了IOS HTTP請(qǐng)求的常見(jiàn)狀態(tài)碼總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-02-02iOS中PNChart與UITableView的聯(lián)動(dòng)示例詳解
PNChart是個(gè)界面很漂亮的圖表第三方庫(kù),UITableView則不用過(guò)多介紹了,各位iOS開(kāi)發(fā)者們都知道,下面這篇文章主要給大家介紹了關(guān)于iOS中PNChart與UITableView的聯(lián)動(dòng)的相關(guān)資料,需要的朋友可以參考下2018-07-07iOS tableview實(shí)現(xiàn)頂部拉伸效果
這篇文章主要為大家詳細(xì)介紹了iOS tableview實(shí)現(xiàn)頂部拉伸效果,以及頭部拉伸效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05iOScollectionView廣告無(wú)限滾動(dòng)實(shí)例(Swift實(shí)現(xiàn))
本篇文章主要介紹了iOScollectionView廣告無(wú)限滾動(dòng)實(shí)例,可以實(shí)現(xiàn)廣告無(wú)限滾動(dòng),有興趣的可以了解一下。2016-11-11iOS實(shí)現(xiàn)對(duì)不同分辨率設(shè)備的字號(hào)大小適配方法
下面小編就為大家分享一篇iOS實(shí)現(xiàn)對(duì)不同分辨率設(shè)備的字號(hào)大小適配方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01