接到一个需求,需要将现有代码封装成库,前前后后查资料查百度用了半个多月,这里为了防止忘记过程(懂得都懂)做一下笔记。
开发环境 xcode 12.5,macOS 11.3.1
首先先创建一个工程,选择framework
创建好工程之后,将你需要打包成framework的内容全部拖到项目内
我这里是用已经做好的framework截的图,所以会跟创建之初有些区别。区别在刚创建的工程只会有一个同名的.h文件,这个文件用来声明一些公开的头文件方便外部引用。
不过也可以删除掉创建一个同名的继承于NSObject类,这样可以在.m文件中做一些你想做的操作。
当然也可以没有这个文件,这样你需要在不同需要时在引用相应的头文件即可。
之后就是将外部需要引用的文件公开。
选择工程文件->对应的target->Build Phases->Headers
将project内的文件按需添加到public中(别学我,我这文件太多了挑不过来-_-||)
然后再在同目录下的Link Binary With Librires中将以来的库添加一下
这时候基本的配置就完成了,直接build的话按正常来说应该就会通过了
不过当你的framework依赖其他自建的framework的时候,并且这个framework是你之前刚创建好的,之前与你当前窗前的framework在同一目录下,都是用#import "XXX"做的引用的时候,就会出现引用不到文件的问题
出现此状况不要慌,你可以选择搜索头文件,将import的方式改为<>
也可以跟我一样,选择偷懒的方式,如图
在build setting中搜索 search paths
找到Header Search Paths
双击修改
将文件的相对路径添加到Header Search Paths中,格式为
$(PROJECT_DIR)/工程名/你需要引用的库所在的文件路径/库名称全称/Headers/
或者$(SRCROOT)/工程名/你需要引用的库所在的文件路径/库名称全称/Headers/
然后重新build,就会发现之前的错误不见了,双引号引用也是可以编译通过的了