Cocoapods 自定义库中引入C源码的目录结构丢失问题

作为代码的搬运用 ,我们经常拿来开源的代码使用,但是有时候一些C++库并没有直接提供Pod。比如鹅厂的rapidjson 。这时我们可以自己制作一个Pod 然后引入到iOS工程中。
但是这里会遇到一个问题,就是Pod文件目录中的代码文件默认是在打平的根目录下。什么意思呢?就是如果你的podspec中如下方式引入rapidjson代码文件

s.source_files = 'thirdparty/**/*.{h,m,mm,c,cpp,cc,hpp}'

在生成Pod中,之前的rapidjson 目录结构会丢失。


image.png

(原结构)


image.png

(只留下打平后的文件,无目录结构)

但这为什么是个问题呢??

好问题,一般情况下也不会出错,但是如果代码里相互之间进行头文件引入就会出现问题。比如rapidjson中writer.h文件的一段代码在编译时就会报错


image.png

如何解决呢?(保留之前目录结构)

很简单 就是一个cocoapod的配置命令header_mappings_dir ,(PS: 还是要看文档啊。。。网上找了很久没有,写下来希望可以帮到其他人)

image.png

最后还要设置一下头文件索引,不然还是会编译报错的(这个大家都知道的)


image.png

你可能感兴趣的:(Cocoapods 自定义库中引入C源码的目录结构丢失问题)