Xcode中引用另一個(gè)項(xiàng)目及常見(jiàn)錯(cuò)誤詳解

開(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了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容