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编译器能解决这个问题,应该是头文件路径定位的优先级问题

转载于:https://www.cnblogs.com/GoGoagg/archive/2013/04/25/3042893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值