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编译器能解决这个问题,应该是头文件路径定位的优先级问题
无论生活、还是技术,一切都不断的学习和更新~~~努力~