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