美文网首页
iOS小记--'XXX/XXX.h' file not foun

iOS小记--'XXX/XXX.h' file not foun

作者: 原鸣清 | 来源:发表于2020-03-05 15:54 被阅读0次

    遇到事了

    如题,这种错误一看就是属于.framework的依赖问题,看起来很简单,把这个包拖进项目里就可以了。但是我的项目是用CocoaPods管理的啊,Pod install的时候也没有报任何异常信息啊,检查下Pods文件夹下一切正常,像baidu找到的Other Link FlagsSearch Path啥的都检查了,还是报错。GG~~~

    find implicit Dependencies

    截屏2020-03-0515.22.14.png

    最后在反选圈起来的这个设置之后,神奇的解决了问题。打破砂锅问到底,在这里找到了理论依据:

    截屏2020-03-0515.12.20.png
    隐藏依赖
    如果Target A需要另一个Target B的输出作为编译输入,那么A依赖于B。
    如果这两个Targets正好在同一个Project或者Workspace下,Xcode会自动检测依赖。
    不止自动检测,Xcode还会自动build 这个Target B,就为了给Target A一个新鲜的输出。
    这一个功能,就叫做隐藏依赖。
    ...
    

    这下就明白了,因为我的WorkSpace下有多个Project,Project A是一个Framework,同时我发布了一个0.5.0版本在CocoaPods上,当前最新的版本已经到了1.0了,很多Api已经重构没了。Project B就是我今天想要build的Framework,它需要依赖于A的0.5.0版本,尽管CocoaPods的相关内容一切正常,但是由于隐藏依赖的存在,Xcode始终会帮我找到那个1.0版本的A,所以会一直编译报错,怎么也解决不了。

    $(inherited)

    最后讲一下这个继承-Stackoverflow。在Other Link Flags里的设置可以选择继承自上层设置,避免重复写好多一样的,可以缺省吗,这个设计还是不错的。
    有一个层级关系,在Build Setting里点下level可以看到,层级如下:

    Resolved <- Target <- xcconfig <- Project <- iOS Default

    iOS Default是最上层的,也就是祖宗类。

    相关文章

      网友评论

          本文标题:iOS小记--'XXX/XXX.h' file not foun

          本文链接:https://www.haomeiwen.com/subject/rslfrhtx.html