想必很多程序猿都见过那些第三方的框架里边引用其他的工程的代码,初见觉得非常高大上,但是完全没有头绪,一直抱着羡慕的心态就这么不了了之了。后来我们项目里需要引入googleDrive的框架,遇到了一些问题,没办法只能抱着电脑找老大解决,给我解释了一通,貌似是路径问题,当时只是解决了问题,自己也没有去研究,今天看到有人提问相关问题,就想趁此机会总结一下~
引用工程
这里我准备了两个demo(AutoLayoutDemo、RRCategoryPropertyDemo)现在要做的是把RRCategoryPropertyDemo导入到AutoLayoutDemo里,并能够成功引用。首先需要把要引入的工程拷贝到当前工程下,这里我得说一下遇到的坑,之前看到一篇文章讲的只拷贝.xcodeproj,操作之后发现导入的工程下的所有类都是红色的=_=,所以这里一定要注意,是拷贝整个工程!整个工程!整个工程!这里,我是将工程的所有内容都放在一个新建的文件夹命名RRCategoryPropertyDemo,这样做是方便了之后的路径拼接
紧接着,我们要让当前工程关联上导入的工程,具体做法是,选中当前工程右键Add File to "file name",选中要导入的工程文件,点击右下角的Add
再看工程目录,就会发现你的当前工程已经包含了另一个工程,成功导入,这样导入就不会出现文件夹下都是标红不存在的情况啦
不要高兴得太早,离成功还差一步,现在仅仅是导入成功了,并没有关联上,可以测试一下在导入的工程里随便找个类,敲入一些符号,正常情况下是能看到红色标错提示的,但是现在却没有,接下来就是比较重要的一步啦,关联路径
选中当前工程的target,选中Build Settings选项,右上角搜索Header Search找到Header Search Paths双击,在弹出框里点有下角的+号,添加导入的工程路径$(SRCROOT)/这个表示当前工程的根目录,后边拼接上第一步建好的放要导入工程的文件夹名,这里要注意,右侧的选项
non-recursive:非递归查找 (默认)
recursive:递归查找
这里我们要选择递归查找,和字面意思一样,如果当前路径找不到,会自动到当前路径的下级目录继续找。
说道这里基本已经完成了,现在可以到当前目录的某个类里添加导入工程类的头文件,你会非常惊喜,xcode可以有提示输入啦,大功告成。
小结
现在很多导入第三方的都有官方文档,或者是通过强大的pods直接导入,但是有些地方还是会用到这种最基本的方法,另外需要注意的是,手动导入工程会出现一种问题,就是pods冲突,这时候就需要根据实际情况来解决问题啦。