作為代碼的搬運(yùn)用 ,我們經(jīng)常拿來開源的代碼使用,但是有時(shí)候一些C++庫并沒有直接提供Pod。比如鵝廠的rapidjson 。這時(shí)我們可以自己制作一個(gè)Pod 然后引入到iOS工程中。
但是這里會(huì)遇到一個(gè)問題,就是Pod文件目錄中的代碼文件默認(rèn)是在打平的根目錄下。什么意思呢?就是如果你的podspec中如下方式引入rapidjson代碼文件
s.source_files = 'thirdparty/**/*.{h,m,mm,c,cpp,cc,hpp}'
在生成Pod中,之前的rapidjson 目錄結(jié)構(gòu)會(huì)丟失。
image.png
(原結(jié)構(gòu))
image.png
(只留下打平后的文件,無目錄結(jié)構(gòu))
但這為什么是個(gè)問題呢??
好問題,一般情況下也不會(huì)出錯(cuò),但是如果代碼里相互之間進(jìn)行頭文件引入就會(huì)出現(xiàn)問題。比如rapidjson中writer.h文件的一段代碼在編譯時(shí)就會(huì)報(bào)錯(cuò)
image.png
如何解決呢?(保留之前目錄結(jié)構(gòu))
很簡(jiǎn)單 就是一個(gè)cocoapod的配置命令header_mappings_dir ,(PS:?? 還是要看文檔啊。。。網(wǎng)上找了很久沒有,寫下來希望可以幫到其他人)
image.png
最后還要設(shè)置一下頭文件索引,不然還是會(huì)編譯報(bào)錯(cuò)的(這個(gè)大家都知道的)
image.png