使用 CocoaPods 执行 pod install 时出现 - Use the `$(inherited)` flag ... 警告

使用 CocoaPods 执行 pod install 时出现 - Use the $(inherited) flag … 警告解决办法
这里写图片描述
这里写图片描述
这里写图片描述
Xcode 中 Build Setting 的两处设置

  • Other Linker Flags
    一般在我们使用某些静态库的时候,里面可能有一些类的分类,正常情况下 链接器 会以为这个分类已经存在,而不去读了,导致了我们缺失了正常的功能,所以为了把这些分类和核心类的代码合起来,必要的时候我们得加上 -ObjC, 形成我们需要的可执行文件。

    -all_load: 链接器把所有找到的目标文件都加载到可执行文件中。但是可能不同的静态库使用了相同的文件导致出错。

    -force_load: 它也是让链接器把所有找到的目标文件都加载到可执行文件中,但是它需要指定进行全部加载的库文件的路径,从而保证只是完全加载了一个库文件。

总的来说,一般用 -ObjC,就算当其失效后,用 -force_load 就可以,而不用-all_load。

  • Search Paths

    常用路径 path ,就是下面三种啦:
    Framework Search Paths
    附加到项目中的framework 的搜索路径。
    Library Search Paths
    附加到项目中的第三方Library的搜索路径。
    Header Search Path
    头文件的搜索路径。
    User Header Search Paths
    只有在Always Search User Paths为Yes时才会被搜索。

(inherited) ( i n h e r i t e d ) : 添 加 目 录 的 时 候 写 上 “ (inherited)” 就是表示路径自己从frameworks里面读取。 默认的情况下路径配置是不被 Targets 继承的,只有当Targets的设置加入了$(inherited)时才被继承,继承来自更高一级的配置。

${PODS_ROOT} : 使用 CocoaPods 时候,Pods 下的路径。有时在用cocoaPod install 完成所需要的第三方类库之后,在要用的地方导入(#import)发现不提示,需要自己手动加入,但现在很少见这种情况啦。

${SDK_DIR}: 指编译目标所使用的 SDK 的目录。

$(SRCROOT) : 代表项目工程文件目录,很好的避免其他同学使用时需要再换路径的情况。

$(PROJECT_DIR) : 表示当前工程文件夹目录,相对路径(相对于当前项目文件夹)。和$(SRCROOT) 区别是它代表** 整个项目 **。

最常见的错误

  • warning:ld: warning: directory not founder option
    查找 Library Search Paths 和 Framework Search Paths,删掉编译报warning的路径即OK。
  • warning:ld: library not found for -lPods
    在 Build Setting 中 other linker flag 里,加上$(inherited)即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值