開(kāi)發(fā)中,某些情況下,需要在一個(gè)主工程中引用另一個(gè)工程,比如開(kāi)發(fā)framework,然后在主工程中調(diào)試。
具體開(kāi)發(fā)步驟:
1.將子工程copy到主工程目錄下。

工程目錄結(jié)構(gòu).jpeg
2.打開(kāi)主工程,F(xiàn)ile->add Files to 找到需要應(yīng)用的工程,然后加入。

選中的工程.jpeg
NOTE:1.引用的是工程目錄,而不是項(xiàng)目目錄。2.某些情況下,引用以后,主工程中看不見(jiàn)子工程,重啟下Xcode.可能是一個(gè)項(xiàng)目中
打開(kāi)了對(duì)應(yīng)的工程。
3.關(guān)聯(lián)2個(gè)工程。正確加入后,主工程和子工程目錄結(jié)構(gòu)。

屏幕快照 2018-05-07 上午10.35.34.png
現(xiàn)在在子工程中(18.4.24-testFramework)寫(xiě)代碼,主工程(18.5.6-集成ncnn)并沒(méi)有關(guān)聯(lián)。

引用項(xiàng)目步驟.jpeg
到此兩個(gè)項(xiàng)目就關(guān)聯(lián)起來(lái)了,某些情況下,報(bào)找不到子工程對(duì)應(yīng)的頭問(wèn)題 xx.h.
就需要在主工程building settings 中,加入對(duì)應(yīng)的頭文件。

主工程中添加搜索文件目錄.jpeg
我的習(xí)慣是,直接添加../主工程名字(如照片所示../18.5.6-集成ncnn) ,記得把
non-recursive,修改為recursive。也可以添加對(duì)應(yīng)的頭文件。
按照以上步驟基本可以實(shí)現(xiàn)2個(gè)工程的編譯了。(⊙o⊙)哦
某些情況下,還是報(bào)錯(cuò)。
錯(cuò)誤處理
1.找不到對(duì)應(yīng)架構(gòu)(啥是架構(gòu)自行g(shù)oogle、百度)。

找不到對(duì)應(yīng)的armv7.jpeg
- 報(bào)無(wú)對(duì)應(yīng)的cpu架構(gòu),如沒(méi)有arm7,首先判斷對(duì)應(yīng)框架是否存在對(duì)應(yīng)的架構(gòu)。framework進(jìn)入,找到對(duì)應(yīng)的可執(zhí)行文件,在終端 lipo -info xxx 查看對(duì)應(yīng)的二進(jìn)制架構(gòu)。
xxx$ lipo -info xxx.a
Architectures in the fat file: xxx.文件 are: armv7 i386 x86_64 arm64
- 存在對(duì)應(yīng)的架構(gòu)還報(bào)找不到,查看項(xiàng)目中對(duì)應(yīng)的framework 是否為源文件,以及對(duì)應(yīng)的位置,重新添加到子項(xiàng)目中。查看對(duì)應(yīng)的build settings ->search framework path 查看是否有對(duì)應(yīng)的查找條件。
- 如果所有都沒(méi)問(wèn)題還找不到,編譯報(bào)無(wú)對(duì)應(yīng)的架構(gòu)。主項(xiàng)目無(wú)法找到,找到對(duì)應(yīng)的子項(xiàng)目framework,然后拖到主項(xiàng)目的framework,注意:此時(shí)主項(xiàng)目?jī)H僅是引用子項(xiàng)目,而不是copy items if need,此時(shí)先編譯下,主項(xiàng)目,然后運(yùn)行,查看是否編譯通過(guò),正常操作,應(yīng)該就可以編譯過(guò)了。至于其他的bitcode 開(kāi)關(guān),根據(jù)情況處理就好了。
- 如果一個(gè)項(xiàng)目直接引用另一個(gè)項(xiàng)目,需要關(guān)閉打開(kāi)的項(xiàng)目,最好在主項(xiàng)目中選擇引用的工程然后編譯一下。
2.在主工程中引用一個(gè)工程,并且這個(gè)工程是framework ,引入主工程的同時(shí),還需要引入生成的對(duì)應(yīng)framework,不然報(bào)找不到對(duì)應(yīng)的文件。

如何去掉引用的工程
找到對(duì)應(yīng)的子工程,點(diǎn)擊刪除,

如果是引用,沒(méi)有復(fù)制,記得刪除
Remove Reference.某些情況下還會(huì)報(bào)找不到對(duì)應(yīng)的架構(gòu),但framework導(dǎo)入沒(méi)問(wèn)題,刪掉本地的DerivedData(如何刪,不解釋),command+k,clear一下項(xiàng)目,就ok了。