iOS開發(fā)之Xcode 相對路徑與絕對路徑

在iOS的工程中阳柔,尤其是在使用CocoaPods前佳吞,經(jīng)常會把某個靜態(tài)庫或者Framework直接拖到工程中童擎,編譯運(yùn)行通過,這樣就可以了么苏章?

一般我們在xcode里面配置包含工程目錄下頭文件的時候寂嘉,都要關(guān)聯(lián)著相對路徑和絕對路徑奏瞬,如果只是自己用這個項目,用絕對路徑的問題不大泉孩,但是如果你把工程發(fā)給別人硼端,別人就要在改這個絕對路徑,這時候絕對路徑的缺點(diǎn)立馬出現(xiàn)寓搬。

Xcode用戶可以 通過Header Search Paths 來配置環(huán)境變量珍昨。但這里涉及到一個另外一個參數(shù) User Header Search Paths, 這兩者到底有什么區(qū)別呢句喷?

首先明確一點(diǎn)镣典,Header Search Paths 顧名思義就是用來存放 Project 中頭文件的搜索根源,沒有被add到項目里的頭文件唾琼,可以通過配置Header Search Paths 來引入頭文件兄春,這樣的好處可以不讓project 包含的文件太多,便于管理锡溯。

淺顯一點(diǎn)的區(qū)別是赶舆,編碼時候通過 #import 引入頭文件的方式有 <> 和 ""兩種。 <> 是只從 Header Search Paths 中搜索祭饭, 而 "" 則能從 Header Search Paths 和 User Header Search Paths 中搜索芜茵。 換言之 ,假如你把 路徑加到 User Header Search Paths 中倡蝙,那么你用 #import <file.h> 的方式去引入對應(yīng)的頭文件夕晓,就會報錯。 如果加到 Header Search Paths, 就沒有問題了悠咱。

具體一點(diǎn)的區(qū)別是蒸辆,<> 是從系統(tǒng)目錄空間 (對應(yīng) Header Search Paths)中搜索文件, "" 是從用戶目錄空間(對應(yīng) User Header Search Paths)中搜索文件析既。 如果你把路徑加到 User Header Search Paths 中躬贡,卻使用 <>導(dǎo)入頭文件,那么程序無法從系統(tǒng)目錄空間中找到新加的路徑眼坏,從而報錯拂玻。

所以在修改User Header Search Paths這個選項的時候使用
"$(SRCROOT)/當(dāng)前工程名字/需要包含頭文件所在文件夾"
將上面的雙引號里面的字符串拷貝之后,你會發(fā)現(xiàn)這個“$(SRCROOT)”宰译,會自動變成當(dāng)前工程所以的目錄檐蚜。
這樣就可以了,發(fā)給別人沿侈,別人也不用再去修改路徑了闯第。

絕對路徑: 點(diǎn)擊工程某個文件,右鍵“show in finder”打開終端缀拭,cd 把文件夾拖入咳短,即可出現(xiàn)一個路徑填帽,這個就是絕對路徑.
相對路徑: 相對于當(dāng)前工程文件的路徑,“./”表示當(dāng)前工程文件夾咙好,篡腌,"../"表示上層目錄 ,在xcode里“$(PROJECT_DIR)”也表示當(dāng)前工程文件夾目錄

這里還要了解一下在iOS中怎么代表相對路徑和絕對路勁
$(SRCROOT)代表的是項目根目錄下
$(PROJECT_DIR)代表的是整個項目
./也表示當(dāng)前工程文件夾
../表示上層目錄

以上相對路徑后面拼接的必須是項目中真實文件夾名,工程內(nèi)部的group無效勾效!

1.c/c++ 頭文件引用問題

include/import <> 引用編譯器的類庫路徑下的頭文件
include/import “” 引用工程目錄的相對路徑的頭文件
include/import 都是編譯指令嘹悼,在編譯時,編譯器會將相對路徑替換成絕對路徑层宫。因此杨伙,頭文件的絕對路徑=搜索路徑+相對路徑。

Xcode Build Settings 中的 Header Search Paths: 即可設(shè)置頭文件搜索路徑卒密。
例如:文件test.h的路徑為testDemo/libs/test.h,我們在Xcode的
Header Search Paths中添加$(SRCROOT)棠赛,那么項目中引用該文件的寫法為#import "libs/test.h"
如果在Header Search Paths中添加$(SRCROOT)/libs, 那么項目中引用該文件的寫法為#import "test.h"

2. Other Linker Flags:“-ObjC”

當(dāng)導(dǎo)入的靜態(tài)庫使用了類別哮奇,其他鏈接標(biāo)簽設(shè)需要設(shè)為-ObjC

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市睛约,隨后出現(xiàn)的幾起案子鼎俘,更是在濱河造成了極大的恐慌,老刑警劉巖辩涝,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贸伐,死亡現(xiàn)場離奇詭異,居然都是意外死亡怔揩,警方通過查閱死者的電腦和手機(jī)捉邢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商膊,“玉大人伏伐,你說我怎么就攤上這事≡尾穑” “怎么了藐翎?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長实幕。 經(jīng)常有香客問我吝镣,道長,這世上最難降的妖魔是什么昆庇? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任末贾,我火速辦了婚禮,結(jié)果婚禮上整吆,老公的妹妹穿的比我還像新娘未舟。我一直安慰自己圈暗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布裕膀。 她就那樣靜靜地躺著员串,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昼扛。 梳的紋絲不亂的頭發(fā)上寸齐,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音抄谐,去河邊找鬼渺鹦。 笑死,一個胖子當(dāng)著我的面吹牛蛹含,可吹牛的內(nèi)容都是我干的毅厚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼浦箱,長吁一口氣:“原來是場噩夢啊……” “哼吸耿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酷窥,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤咽安,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蓬推,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妆棒,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年沸伏,在試婚紗的時候發(fā)現(xiàn)自己被綠了糕珊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡毅糟,死狀恐怖放接,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情留特,我是刑警寧澤纠脾,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蜕青,受9級特大地震影響苟蹈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜右核,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一慧脱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贺喝,春花似錦菱鸥、人聲如沸宗兼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殷绍。三九已至,卻和暖如春鹊漠,著一層夾襖步出監(jiān)牢的瞬間主到,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工躯概, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留登钥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓娶靡,卻偏偏與公主長得像牧牢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姿锭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理塔鳍,服務(wù)發(fā)現(xiàn),斷路器艾凯,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 一般我們在xcode里面配置包含工程目錄下頭文件的時候献幔,都要關(guān)聯(lián)著相對路徑和絕對路徑懂傀,如果只是自己用這個項目趾诗,用絕...
    心有琳鑫閱讀 12,484評論 0 15
  • 有時候更新了APP之后,發(fā)現(xiàn)了一個問題蹬蚁,上傳附件的時候一直報錯 No such file or directo...
    劉應(yīng)閱讀 809評論 0 1
  • #include #include 是預(yù)處理指令恃泪,在編譯之前的預(yù)處理期執(zhí)行。它的作用是將引入文件中的內(nèi)容拷貝到當(dāng)前...
    寒咯閱讀 3,574評論 0 10
  • 很多時候犀斋,在iOS 導(dǎo)入第三方SDK包贝乎,當(dāng)你引入頭文件的時候,卻索引不了.h的文件叽粹,即使能索引頭文件览效,提示找不到頭...
    rectinajh閱讀 11,304評論 0 5