最近在维护一个老项目, 发现使用的AFNetworking已经太老了, 项目并没有使用cocoapods, 于是打算给项目集成一下cocoapods方便以后维护, 一顿常规操作
pod init
编辑podfile
pod install
run一下, 发现报了ld: library not found for -l<AFNetworking>的错误, 目前只集成了这一个Pod
解决方法
删除了
原先build settings内几个键的所有值改为了$(inherited)
:
OTHER_LDFLAGS 对应Other Linker Flags
OTHER_CFLAGS 对应Other C Flags
LIBRARY_SEARCH_PATHS 对应 Library Search Paths
HEADER_SEARCH_PATHS 对应 Header Search Paths
原因
- cocoapods会修改xcode的编译配置, 如何修改的呢, 通过
Pods-yourpoject.debug.xcconfig
和Pods-yourpoject.release.xcconfig
这两个文件, xconfig格式文件也可以自己创建, 是Apple给用户准备的自定义配置文件 -
在这里生效:
image.png
- Xcode build过程会优先使用这个xconfig格式文件的键值
- 另外, target可以继承project的build settings的键值, 即通过
$(inherited)
- 由于我的项目之前没有这个关键字, 导致Library Search Paths没有继承cocoapods的项目配置, 出现了无法link library的问题
结论
一定要把cocopods的Pods-yourpoject.debug.xcconfig
和Pods-yourpoject.release.xcconfig
这两个文件传递到target中, 否则将会出现build错误的问题
网友评论