Xcode 中 Build Setting 的兩處設置

這兩天在弄項目分支的時候,發現自己對項目中 build Setting 的這兩個東東老是感覺迷糊,有點不清楚,特此筆記下。

  • Other Linker Flags
  • Search Paths

1、Other Linker Flags

通常我們會在這個選項中加入 ,最常用的是 -ObjC , 他們有什么作用呢?

  • -ObjC
  • -all_load
  • -force_load

一般在我們使用某些靜態庫的時候,里面可能有一些類的分類,正常情況下 鏈接器 會以為這個分類已經存在,而不去讀了,導致了我們缺失了正常的功能,所以為了把這些分類和核心類的代碼合起來,必要的時候我們得加上 -ObjC, 形成我們需要的可執行文件。

  • -ObjC : 鏈接器把靜態庫中所有的Objective-C類和分類都加載到最后的可執行文件中,保證都可執行。但是當 靜態庫中只有分類而沒有類的時候,-ObjC參數就會失效了
  • -all_load: 鏈接器把所有找到的目標文件都加載到可執行文件中。但是可能不同的靜態庫使用了相同的文件導致出錯。
  • -force_load: 它也是讓鏈接器把所有找到的目標文件都加載到可執行文件中,但是它需要指定進行全部加載的庫文件的路徑,從而保證只是完全加載了一個庫文件。

總的來說,一般用 -ObjC,就算當其失效后,用 -force_load 就可以,而不用-all_load。

具體詳解可閱讀: 關于Xcode的Other Linker Flags

2、Search Paths

常用路徑 path ,就是下面三種啦:

  • Framework Search Paths
    附加到項目中的framework 的搜索路徑。

  • Library Search Paths
    附加到項目中的第三方Library的搜索路徑。

  • Header Search Path
    頭文件的搜索路徑。

  • User Header Search Paths
    只有在Always Search User Paths為Yes時才會被搜索。

此處我們可以先來了解下:

  • $(inherited):添加目錄的時候寫上 “$(inherited)” 就是表示路徑自己從frameworks里面讀取。 默認的情況下路徑配置是不被 Targets 繼承的,只有當Targets的設置加入了$(inherited)時才被繼承,繼承來自更高一級的配置。
  • ${PODS_ROOT} : 使用 CocoaPods 時候,Pods 下的路徑。有時在用cocoaPod install 完成所需要的第三方類庫之后,在要用的地方導入(#import)發現不提示,需要自己手動加入,但現在很少見這種情況啦。
  • ${SDK_DIR}: 指編譯目標所使用的 SDK 的目錄。
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk
  • $(SRCROOT) : 代表項目工程文件目錄,很好的避免其他同學使用時需要再換路徑的情況。
  • $(PROJECT_DIR) : 表示當前工程文件夾目錄,相對路徑(相對于當前項目文件夾)。和$(SRCROOT) 區別是它代表** 整個項目 **。

如最常見的錯誤:

  • warning:ld: warning: directory not founder option
    查找 Library Search Paths 和 Framework Search Paths,刪掉編譯報warning的路徑即OK。
  • warning:ld: library not found for -lPods
    在 Build Setting 中 other linker flag 里,加上$(inherited)即可。
備注參考

http://small.qiang.blog.163.com/blog/static/978493072013112571950/
http://blog.devzeng.com/blog/ios-xcode-search-paths.html
http://ship2013.blog.163.com/blog/static/22861106720131126103130568/

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

推薦閱讀更多精彩內容

  • 僅以方便自己查閱記錄前言1.靜態庫和動態庫有什么異同?靜態庫:鏈接時完整地拷貝至可執行文件中,被多次使用就有多份冗...
    190CM閱讀 4,260評論 0 4
  • 靜態庫與動態庫的區別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,039評論 3 42
  • 文件后綴名 h :頭文件。頭文件包含類,類型,函數和常數的聲明。 .m :源代碼文件。這是典型的源代碼文件擴展名,...
    白屏閱讀 1,210評論 0 49
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,775評論 25 708
  • 為什么現在善良的人越來越少,好人越來越不管閑事,我們不得不深深的思考。 或許你會說它們不是好人??墒撬鼈冃睦镌趺聪?..
    感情顧問七七閱讀 312評論 0 2