Xcode中的workspace, project, target, scheme

Xcode Project

Xcode中的 project里面包含了所有的源文件,資源文件和構(gòu)建一個(gè)或者多個(gè)product的信息。project利用他們?nèi)ゾ幾g我們所需的product,也幫我們組織它們之間的關(guān)系。一個(gè)project可以包含一個(gè)或者多個(gè)target。project定義了一些基本的編譯設(shè)置,每個(gè)target都繼承了project的默認(rèn)設(shè)置,每個(gè)target可以通過重新設(shè)置target的編譯選項(xiàng)來定義自己的特殊編譯選項(xiàng)。

project包含了以下信息:

  • 源文件
    1. 代碼的頭文件和實(shí)現(xiàn)文件
    2. 靜態(tài)庫,動(dòng)態(tài)庫
    3. 資源文件(如文本,xml,plist等)
    4. 圖片資源
    5. 界面資源文件(xib, storyboard等)
  • 在文件結(jié)構(gòu)的導(dǎo)航中,采用group去組織文件(實(shí)際開發(fā)中,盡量使用實(shí)體文件夾)
  • project的編譯級別配置文件如(debug, release)
  • target
  • 運(yùn)行環(huán)境如:debug,test
    [注]project可以單獨(dú)存在,或者存在于一個(gè)workspace中

Target

target定義了構(gòu)造一個(gè)product所需的文件和編譯指令。一個(gè)target對應(yīng)于一個(gè)product。target說白了就是
告訴編譯系統(tǒng)要編譯的文件和編譯設(shè)置。編譯指令就是根據(jù)build settings and build phases來確定的。
target之間可以進(jìn)行依賴。如果一個(gè)target的編譯需要另外一個(gè)target作為他的輸入,那么我們就可以說前者依賴于后者。如果這兩個(gè)target在同一個(gè)workspace里面,Xcode可以發(fā)現(xiàn)他們的依賴關(guān)系,這種依賴稱之為隱式依賴。當(dāng)然你可以通過設(shè)置,明確他們的依賴關(guān)系。

workspace

workspace是Xcode的一種文件,用來管理工程和里面的文件,一個(gè)workspace可以包含若干個(gè)工程,甚至可以添加任何你想添加的文件。workspace提供了工程和工程里面的target之間隱式和顯式依賴關(guān)系,用來管理和組織工程里面的所有文件。

workspace中的工程共享一個(gè)編譯目錄

workspace中的工程默認(rèn)都是在同一個(gè)編譯目錄下,也就是workspace的編譯目錄。由于每個(gè)工程中的文件都在workspace的編譯目錄下,所以每個(gè)工程之間的文件都是相互可以引用的。因此,如果workspace中的多個(gè)工程使用了同一個(gè)庫的時(shí)候,我們就不需要給每個(gè)工程都拷貝一個(gè)。

Xcode會(huì)檢查編譯目錄里面的所有文件去發(fā)現(xiàn)隱式的依賴關(guān)系。比如,一個(gè)工程用來編譯成庫給其他工程去引用,Xcode可以自動(dòng)的先編譯這個(gè)工程的庫,然后再去編譯其他的工程。雖然你沒有在編譯選項(xiàng)里面去設(shè)置這些依賴關(guān)系。當(dāng)然如果你真的需要的話,你也可以去設(shè)置,提供一個(gè)顯式的編譯依賴關(guān)系。

workspace中每個(gè)工程依然都是獨(dú)立的。如果你想單獨(dú)的使用這個(gè)工程,并且不希望影響其他工程,或者被其他工程影響,你可以直接打開工程而不通過workspace。一個(gè)工程可以被多個(gè)workspace所擁有,在任意的組合中依然可以直接運(yùn)行,而不需要去重新配置工程或者workspace。

Xcode Scheme

scheme定義了編譯集合中的若干target,編譯時(shí)的一些設(shè)置以及要執(zhí)行的測試集合。我們可以定義多個(gè)scheme,但是每次只能使用其中一個(gè)。我們可以設(shè)置scheme保存在project中還是workspace中。如果保存在project中,那么任意包含了這個(gè)工程的workspace都可以使用。如果保存在workspace中,那么只有這個(gè)workspace可以使用。

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

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

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