XCode import頭文件出現這么一個問題


XCode
import頭文件出現這么一個問題:
用實例來說明

【環境】
OS X 10.8.2
XCode4.5
Svn版本控制

【Svn目錄】
原有目錄關系如下:
[Base]---->[Reserve]---->[Game]
            ---->{A.h,A.m,B.h,B.m},其中B.m文件import "A.h"

【應用原有拓展】
由於新項目在原有項目基礎上擴展開發,那么新項目保留[Base]---->[Reserve]相關代碼
在[Base]平級新增如下目錄
[newPrj]---->[Reserve]---->[Game]
            ---->{A.h,A.m,B.h,B.m}
由於A.h,A.m文件在當前項目中的實現與[Base]有差異,且不能應用到[Base]
那么需要新增一個目錄,最后效果如下
[newPrj]---->[Reserve]---->[Game]
            ---->{A.h,A.m,B.h,B.m}
        ---->[Extra]  ---->[Game]
            ---->{A.h,A.m}

在xcode中,工程項目如下處理:
1、刪除原有[Reserve]---->[Game]中A.h,A.m的引用
2、添加[Extra]  ---->[Game]的A.h,A.m的引用

這個時候點擊B.m文件在定位A.h,一直指向[Reserve]---->[Game]中的A.h,而且由於A.h在[Reserve]和[Extra]差異性實現導致一些引用失敗從而編譯失敗
比如:
[Base]:    A.h引用第3方庫K.h
[newPrj]:    A.h不用第3方庫K.h,且項目也沒有引用第3方庫
這個時候,編譯,一直會讓你找K.h,因為:B.m文件在定位A.h,一直指向[Reserve]---->[Game]中的A.h,不是[Extra]  ---->[Game]中的A.h

PS:如果兩個目錄中A.h都一樣就不會存在這類問題。

如何解決這個問題:
1、先進入[Base]項目
新增目錄[Header],效果如下
[Base]---->[Reserve]---->[Game]
            ---->{A.h,A.m,B.h,B.m}
      ---->[Reserve]---->[Header]
            ---->{libCommon.h},這個文件有這么一句話#import "A.h"            
            
注意,B.m文件修改成import "libCommon.h"
當然編譯成功的,checkin
2、在[newPrj]項目下拉最新,效果如下
[newPrj]---->[Reserve]---->[Game]
            ---->{A.h,A.m,B.h,B.m}
        ---->[Reserve]---->[Header]
            ---->{libCommon.h}
        ---->[Extra]  ---->[Game]
            ---->{A.h,A.m}
[newPrj]項目工程把[Header]引用到項目中,再點擊B.m文件在定位A.h,這個時候會定位到[Extra]  ---->[Game]中的A.h

當然,這樣也算解決了問題

只是以后的編寫上來說,相對復雜了一些

最后,希望XCode編譯器能解決這個問題,應該是頭文件路徑定位的優先級問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM