Xcode中的元概念

workspace

workspace是Xcode項(xiàng)目管理中最大的集合,可以包含多個(gè) project,管理多個(gè) project 之間的關(guān)系。workspace 是以 .xcworkspace 的文件形式存在的,它不是一個(gè)文件夾,而是一個(gè)有管理、索引作用的文件。workspace 是為了解決之前只有 project 的時(shí)候多個(gè) project 之間的引用和調(diào)用困難的問(wèn)題。

  • workspace擴(kuò)展了Xcode的工作范圍。例如,indexing在整個(gè)workspace里面做索引,code completion、Jump to Definition以及一些其他功能都是針對(duì)著整個(gè)workspace。當(dāng)building時(shí)候,一個(gè)project可以使用workspace中其他project的products。
  • 默認(rèn)情況下,所有的workspace中的project都構(gòu)建在同一個(gè)目錄下(workspace build directory)。每一個(gè)workspace有它自己的build directory。因?yàn)樗衟rojects中的文件是同一個(gè)build directory,所有這些文件對(duì)每個(gè)project都是可見(jiàn)的,所以,如果有多個(gè)project用同一個(gè)libraries,你不需要單獨(dú)copy它們到每一個(gè)project文件夾中。Xcode會(huì)檢查build directory中的文件去發(fā)現(xiàn)它們implicit dependencies。

project

project是Xcode對(duì)一些代碼文件、資源、配置信息的管理倉(cāng)庫(kù)。project是以 .xcodeproj 的文件形式存在的。一個(gè)project包含所有構(gòu)建產(chǎn)品所需的內(nèi)容并且維護(hù)他們之間關(guān)系。

4.jpg

  • 一個(gè)project可以單獨(dú)存在,也可以包含在一個(gè)workspace里。
  • Project可以包含多個(gè)targets,并且為所有的target定義默認(rèn)的build setting(每一個(gè)target可以自定義它們的build setting,這些自定義的setting會(huì)覆蓋project默認(rèn)的build setting)。

target

target表示如何構(gòu)建一個(gè)具體產(chǎn)品,決定了如何對(duì)文件進(jìn)行編譯(編譯哪幾個(gè)文件,鏈接哪些動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù),使用什么編譯腳本),怎么從一個(gè)project或者workspace的一堆文件導(dǎo)出一個(gè)產(chǎn)品。
3.jpg
  • 一個(gè)target對(duì)應(yīng)一個(gè)產(chǎn)品,它管理著一個(gè)產(chǎn)品的編譯信息的"輸入"(一堆源文件和一些處理這些源文件的命令)。
  • 構(gòu)建一個(gè)product的instruction表現(xiàn)形式是build settings and build phases(可以在Xcode Project editor里面查看、編輯)。一個(gè)target的build settings 繼承project的build settings,但是重寫(xiě)覆蓋project setting。同一時(shí)間里只有一個(gè)active Target ,由Xcode Scheme指定。
  • 一個(gè)target可以依賴其他的target。如果這倆個(gè)target在同一個(gè)workspace,Xcode會(huì)發(fā)現(xiàn)他們的依賴關(guān)系,從而按照特定的順序構(gòu)建產(chǎn)品,這樣的關(guān)系被稱(chēng)為"implicit dependency"。例如,一個(gè)workspace中的A project 構(gòu)建了一個(gè)A庫(kù),這個(gè)A庫(kù)被workspace中另一個(gè)B project引用,Xcode會(huì)自動(dòng)先構(gòu)建A庫(kù),然后構(gòu)建B project,即使build configuration中沒(méi)有明顯的設(shè)置。如果需要的話,你可以用explicit build settings重寫(xiě)implicit dependencies。對(duì)于“顯示依賴”(explicit dependencies),必須創(chuàng)建項(xiàng)目引用。

scheme

scheme(方案)不同于上面的概念,表示一個(gè)組合方案。scheme是以 .xcscheme 的文件形式存在的。它指定構(gòu)建哪些targets,使用什么build configuration與executable configuration 。可以針對(duì)編譯,運(yùn)行,單元測(cè)試,動(dòng)態(tài)分析,靜態(tài)代碼分析以及打包進(jìn)行一些配置。

2.jpg

  • 可以創(chuàng)建許多scheme,但是同一時(shí)間只能有一個(gè)是激活的。
  • 可以把scheme保存在project或workspace。如果保存在project中,那么該scheme在每一個(gè)包含該project的workspace內(nèi)都可用;如果保存在workspace中,那么只有該workspace中可用。
  • 選擇一個(gè)shceme,同時(shí)也需要選擇一個(gè)運(yùn)行平臺(tái)(構(gòu)建產(chǎn)品運(yùn)行的硬件平臺(tái)架構(gòu))。如圖,testscheme為選擇的scheme,右邊對(duì)應(yīng)的運(yùn)行平臺(tái)是iPhone 8 Pluse模擬器。
    1.jpg

參考官網(wǎng)鏈接·Xcode元概念

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

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