作为代码的搬运用 ,我们经常拿来开源的代码使用,但是有时候一些C++库并没有直接提供Pod。比如鹅厂的rapidjson 。这时我们可以自己制作一个Pod 然后引入到iOS工程中。
但是这里会遇到一个问题,就是Pod文件目录中的代码文件默认是在打平的根目录下。什么意思呢?就是如果你的podspec中如下方式引入rapidjson代码文件
s.source_files = 'thirdparty/**/*.{h,m,mm,c,cpp,cc,hpp}'
在生成Pod中,之前的rapidjson 目录结构会丢失。

(原结构)

(只留下打平后的文件,无目录结构)
但这为什么是个问题呢??
好问题,一般情况下也不会出错,但是如果代码里相互之间进行头文件引入就会出现问题。比如rapidjson中writer.h文件的一段代码在编译时就会报错

如何解决呢?(保留之前目录结构)
很简单 就是一个cocoapod的配置命令header_mappings_dir ,(PS:😔 还是要看文档啊。。。网上找了很久没有,写下来希望可以帮到其他人)

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

网友评论