开发中经常需要集成第三方公司的SDK,常见的就是引用的.a与FrameWork库。经常会遇到各种报错信息。
常见的报错
问题1
'xxx' file not found
问题2
Snip20171027_7.png以上两个问题是常见的在项目放入第三方库出现的报错信息. 总的原因就是没有配置好.
Xcode三个中要的配置
以上出现的问题都是Xcode的这三个配置有问题
Framework Search Paths 管理导入的*.framework的路径
Library Search Paths 管理导入的*.a的路径
Header Search Paths 管理导入的头文件的路径
配置路径技巧可以直接拖拽方式
自动生成路径,注意默认可能生成的是带双引号的文件路径,需要手动更改为文件夹路径.
切记:
当我们设置完路径后,验证时候正常时候,首先要执行 command + shitf + k 清理一下,在编译验证.
Search Path
Snip20171027_10.png- 带双引号的路径可以识别空格,如果引号的路径,如果路径中包含空格它会自动变成两个路径.建议加上双引号.
-
$(SRCROOT)
跟$(PROJECT_DIR)
基本没什么却别,都是指向*.xcodeproj
所在的路径 - 通过
/..
来调到上一层路径,返回上上层文件夹用/../..
-
$(inherited)
: 如果一个target的Framework Search Paths
添加了$(inherited)
参数,那么该target会继承PROJECT -> Build Settings -> Framework Search Paths
里面的路径。 开发中使用场景:
一个项目里面有多个target,使用到了同一个库(Library或Framework)那么为
了方便我们可以在target添加继承参数,并且PROJECT统一中添加库的路径。
-
recursive
: 遍历该目录。non-recursive:默认路径设置;不遍历该目录。
如果路径的属性为recursive,那么编译的时候在找库的路径的时候,会遍历该目录下的所有子目录的库文件。开发中的常用做法:
在搭建项目的时候,可以创建一个专门放库文件的文件夹并且设置其属性为recursive。
$(PROJECT_DIR)/**相当于遍历项目文件同级下的所有路径(不推荐使用,项目大的话,影响编译的速度)。
网友评论