Xcode 中的相對路徑與絕對路徑的相關設定,xcode絕對路徑

來源:互聯網
上載者:User

Xcode 中的相對路徑與絕對路徑的相關設定,xcode絕對路徑

近日閑來無事,與部落格園中閒蕩,忽至一煙霞照耀祥瑞蒸熏松竹翠秀奇花遍開的神奇之地。如此美景,令人心生嚮往,故而徜徉於其中不可自拔,獨樂樂不如眾樂樂:

iOS開發之 相對路徑與絕對路徑

 https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

在iOS的工程中,尤其是在使用CocoaPods前,經常會把某個靜態庫或者Framework直接拖到工程中,編譯運行通過,這樣就可以了嗎? 一般我們在xcode裡面配置包含工程目錄下標頭檔的時候,都要關聯著相對路徑和絕對路徑,如果只是自己用這個項目,用絕對路徑的問題不大,但是如果你把工程發給別人,別人就要在改這個絕對路徑,這時候絕對路徑的缺點立馬出現。

     XCode使用者可以 通過Header Search Paths 來配置環境變數。但這裡涉及到一個另外一個參數 User Header Search Paths, 這兩者到底有什麼區別呢?   

  首先明確一點,Header Search Paths 顧名思義就是用來存放 Project 中標頭檔的搜尋根源,沒有被add到項目裡的標頭檔,可以通過配置Header Search Paths 來引入標頭檔,這樣的好處可以不讓project 包含的檔案太多,便於管理。

     淺顯一點的區別是,編碼時候通過 #include 引入標頭檔的方式有兩種 <> 和 ""。<> 是只從 Header Search Paths 中搜尋, 而 "" 則能從  Header Search Paths 和  User Header Search Paths 中搜尋。換言之 ,假如你把 路徑加到  User Header Search Paths 中,那麼 你用 #include <file.h> 的方式去引入對應的標頭檔,就會報錯。 如果加到  Header Search Paths,  就沒有問題了。

     具體一點的區別是,<> 是從系統目錄空間 (對應 Header Search Paths)中搜尋檔案, "" 是從使用者目錄空間(對應 User Header Search Paths)中搜尋檔案。如果你把路徑加到 User Header Search Paths 中,而 <> 無法從系統目錄空間中找到新加的路徑,從而報錯。

 

所以在修改User Header Search Paths這個選項的時候使用

"$(SRCROOT)/當前工程名字/需要包含標頭檔所在檔案夾"

將上面的雙引號裡面的字串拷貝之後,你會發現這個“$(SRCROOT)”,會自動變成當前工程所以的目錄。

這樣就可以了,發給別人,別人也不用在去修改路徑了。

 

1.c/c++ 標頭檔引用問題

include <> 引用編譯器的類庫路徑下的標頭檔

include “” 引用工程目錄的相對路徑的標頭檔 

include 是編譯指令,在編譯時間,編譯器會將相對路徑替換成絕對路徑,因此,標頭檔絕對路徑=搜尋路徑+相對路徑。

Xcode Build Settings 下 Search Paths設定搜尋路徑

Header Search Paths:標頭檔搜尋路徑設定

$(SRCROOT)宏和$(PROJECT_DIR)宏都指xxx.xcodeproj所在的父目錄

 

例如:引用工程testDemo/scr/test.h 標頭檔,

Header Search Paths中添加$(SRCROOT),引用為include “scr/test.h"

如果在Header Search Paths中添加$(SRCROOT)/scr,那麼標頭檔引用直接引用 include “test.h”

 

1.

$(inherited) "$(SRCROOT) 修改.a檔案的路徑 --Library Search Paths

 $(inherited) "$(SRCROOT)/.a檔案所在的檔案名稱"

  //如果有多個.a檔案格式就像這樣

$(inherited) "$(SRCROOT)/xxxx" "$(SRCROOT)/xx"

 如果取的是相對是絕對路徑那麼工程移到別的地方就有可能導致運行出錯。所以要改成相對路徑

2.      

Other Linker Flags:其他連結標籤

設為“-ObjC”

當匯入的靜態庫使用了類別,需要設為-ObjC

 以上原文轉載自http://www.cnblogs.com/muyushifang07/p/4460688.html

感謝作者“沐雨十方07 ”的原創。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.