Xcode中的 workspace, project, target, scheme

最近在做SDK兼容性測(cè)試發(fā)現(xiàn)一個(gè)問題,就是編譯出來的SDK蕾总,在iOS8以下的系統(tǒng)中不能用粥航。查了下,發(fā)現(xiàn)是編譯設(shè)置錯(cuò)了生百,雖然我target設(shè)置的是支持iOS6以上的躁锡,但是工程設(shè)置的還是iOS8以上。xib文件編譯的版本是根據(jù)project設(shè)置置侍,而不是target,這個(gè)也是為什么在低于iOS8中不能用的原因拦焚。正好之前對(duì)SDK開發(fā)進(jìn)行了工程拆分和重組蜡坊,也使用了workspace,順便也了解了些編譯相關(guān)的東西赎败。

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包含了以下信息:

  • 源文件

    • 代碼的頭文件和實(shí)現(xiàn)文件
    • 靜態(tài)庫(kù),動(dòng)態(tài)庫(kù)汉规,
    • 資源文件(如文本礼殊,xml,plist等)
    • 圖片資源
    • 界面資源文件(xib针史, storyboard等)
  • 在文件結(jié)構(gòu)的導(dǎo)航中晶伦,采用group去組織文件(實(shí)際開發(fā)中,盡量使用實(shí)體文件夾)

  • project的編譯級(jí)別配置文件如(debug啄枕, release)

  • target

  • 運(yùn)行環(huán)境如:debug婚陪,test

project可以單獨(dú)存在,或者存在于一個(gè)workspace中频祝。

target

target定義了構(gòu)造一個(gè)product所需的文件和編譯指令泌参。一個(gè)target對(duì)應(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è)庫(kù)的時(shí)候寄疏,我們就不需要給每個(gè)工程都拷貝一個(gè)是牢。

Xcode會(huì)檢查編譯目錄里面的所有文件去發(fā)現(xiàn)隱式的依賴關(guān)系僵井。比如,一個(gè)工程用來編譯成庫(kù)給其他工程去引用驳棱,Xcode可以自動(dòng)的先編譯這個(gè)工程的庫(kù)批什,然后再去編譯其他的工程。雖然你沒有在編譯選項(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í)行的測(cè)試集合缘屹。我們可以定義多個(gè)scheme,但是每次只能使用其中一個(gè)侠仇。我們可以設(shè)置scheme保存在project中還是workspace中轻姿。如果保存在project中,那么任意包含了這個(gè)工程的workspace都可以使用逻炊。如果保存在workspace中互亮,那么只有這個(gè)workspace可以使用。

參考:官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末余素,一起剝皮案震驚了整個(gè)濱河市豹休,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桨吊,老刑警劉巖威根,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異视乐,居然都是意外死亡医窿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門炊林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卷要,你說我怎么就攤上這事渣聚《懒瘢” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵奕枝,是天一觀的道長(zhǎng)棺榔。 經(jīng)常有香客問我,道長(zhǎng)隘道,這世上最難降的妖魔是什么症歇? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谭梗,結(jié)果婚禮上忘晤,老公的妹妹穿的比我還像新娘。我一直安慰自己激捏,他們只是感情好设塔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著远舅,像睡著了一般闰蛔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上图柏,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天序六,我揣著相機(jī)與錄音,去河邊找鬼蚤吹。 笑死例诀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的距辆。 我是一名探鬼主播余佃,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼跨算!你這毒婦竟也來了爆土?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤诸蚕,失蹤者是張志新(化名)和其女友劉穎步势,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體背犯,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坏瘩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了漠魏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔矾。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哪自,到底是詐尸還是另有隱情丰包,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布壤巷,位于F島的核電站邑彪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胧华。R本人自食惡果不足惜寄症,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矩动。 院中可真熱鬧有巧,春花似錦、人聲如沸铅忿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)檀训。三九已至柑潦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峻凫,已是汗流浹背渗鬼。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荧琼,地道東北人譬胎。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像命锄,于是被迫代替她去往敵國(guó)和親堰乔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Xcode Project Xcode中的 project里面包含了所有的源文件脐恩,資源文件和構(gòu)建一個(gè)或者多個(gè)pro...
    童星閱讀 657評(píng)論 0 1
  • 注:轉(zhuǎn)載需聯(lián)系本作者趙先生Try镐侯。 簡(jiǎn)介 今天來說說Xcode中幾個(gè)概念,Project驶冒,Target苟翻,Build...
    i順頌時(shí)宜閱讀 11,097評(píng)論 1 39
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)骗污,斷路器崇猫,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 翻譯@Xcode Concepts(Xcode若干概念解釋) 原文:Xcode Concepts Xcode Ta...
    fever105閱讀 639評(píng)論 0 0
  • 原文鏈接在上一篇教程(中譯版)中狱从,你學(xué)到了怎么樣創(chuàng)建一個(gè)可復(fù)用的圓形旋鈕控件刃鳄。然而你可能不清楚怎樣讓其他開發(fā)者更方...
    _冷憶閱讀 2,439評(píng)論 9 5