一:
开发的过程当中,导入第三方库(framework/.a)或者下载使用别人的demo会经常会遇到一些关于库的导入的问题。而导入第三方库后,这写库的路径应该现在在导入当前项目target的Search Paths中,具体的设置路径:target -> Build Settings -> Search Paths -> Framework Search Paths 或者 Library Search Paths
, 头文件在改配置中的Header Search Paths
管理。
简言之:
Framework Search Paths
管理导入的*.framework的路径
Library Search Paths
管理导入的*.a的路径
Header Search Paths
管理导入的头文件的路径
Search Paths相关参数说明
导入库的时候自动生成的的路径:$(PROJECT_DIR)/XcodeForSeachPathTest/ThirdLib/zhenLib
,手动拖拽的路径"$(SRCROOT)/../Frameworks/zhenFW/zhenFW.framework"
,很明显的区别是手动拖的有双引号,双引号的作用是如果在路径中有空格,可以识别该路径。没有双引号但是路径中有空格,我们发现它会自动变成两个路径。
路径中有空格必须要加双引号
多个路径可以用空格隔开,不用双引号包住
$(SRCROOT)
/ $(PROJECT_DIR)
基本没啥区别,都是指向*.xcodeproj所在的路径
通过/..
来调到上一层路径,返回上上层文件夹用/../..
$(inherited)
: target 的 Framework Search Paths添加$(inherited)
参数会从PROJECT -> Build Settings -> Framework Search Paths里面的路径会被其继承,没有的话不会继承。所以一个项目里面有多个target,使用到了同一个库(Library或Framework)那么为了方便我们可以在target添加继承参数,并且PROJECT统一中添加库的路径。继承的优先级:
Platform defaults
Project file (描述举例用这个优先级,比较常用)
xcconfig file for the Project file
Target
xcconfig file for the Target
recursive:遍历该目录,non-recursive:默认路径设置;不遍历该目录。如果路径的属性为recursive,那么编译的时候在找库的路径的时候,会遍历该目录下的所有子目录的库文件。PS:在搭建项目的时候,可以创建一个专门放库文件的文件夹并且设置其属性为recursive。$(PROJECT_DIR)/**相当于遍历项目文件同级下的所有路径(不推荐使用,项目大的话,影响编译的速度)。
Search Paths子选项:Header Search Paths 、User Header Search Paths的参数设置与其相同
具体路径应该需要根据不同项目的不同的路径来配置,通过了解相关配置,可以更加方便的查错和修复错误
2.
import 双引号与尖括号的区别以及build setting 中一些 header search path 配置的说明,参考如下链接
https://blog.csdn.net/jerryandliujie/article/details/79965969
3.
经常有时候,配置是正常的但是就是一直报错???
1、删除重新添加