开发中,某些情况下,需要在一个主工程中引用另一个工程,比如开发framework,然后在主工程中调试。
具体开发步骤:
1.将子工程copy到主工程目录下。
2.打开主工程,File->add Files to 找到需要应用的工程,然后加入。
NOTE:
1.引用的是工程目录,而不是项目目录。2.某些情况下,引用以后,主工程中看不见子工程,重启下Xcode.可能是一个项目中
打开了对应的工程。
3.关联2个工程。正确加入后,主工程和子工程目录结构。
现在在子工程中(18.4.24-testFramework)写代码,主工程(18.5.6-集成ncnn)并没有关联。
到此两个项目就关联起来了,某些情况下,报找不到子工程对应的头问题 xx.h.
就需要在主工程building settings 中,加入对应的头文件。
我的习惯是,直接添加../主工程名字(如照片所示../18.5.6-集成ncnn) ,记得把
non-recursive
,修改为recursive
。也可以添加对应的头文件。
按照以上步骤基本可以实现2个工程的编译了。(⊙o⊙)哦
某些情况下,还是报错。
错误处理
1.找不到对应架构(啥是架构自行google、百度)。
- 报无对应的cpu架构,如没有arm7,首先判断对应框架是否存在对应的架构。framework进入,找到对应的可执行文件,在终端 lipo -info xxx 查看对应的二进制架构。
xxx$ lipo -info xxx.a
Architectures in the fat file: xxx.文件 are: armv7 i386 x86_64 arm64
- 存在对应的架构还报找不到,查看项目中对应的framework 是否为源文件,以及对应的位置,重新添加到子项目中。查看对应的build settings ->search framework path 查看是否有对应的查找条件。
- 如果所有都没问题还找不到,编译报无对应的架构。主项目无法找到,找到对应的子项目framework,然后拖到主项目的framework,注意:此时主项目仅仅是引用子项目,而不是copy items if need,此时先编译下,主项目,然后运行,查看是否编译通过,正常操作,应该就可以编译过了。至于其他的bitcode 开关,根据情况处理就好了。
- 如果一个项目直接引用另一个项目,需要关闭打开的项目,最好在主项目中选择引用的工程然后编译一下。
2.在主工程中引用一个工程,并且这个工程是framework ,引入主工程的同时,还需要引入生成的对应framework,不然报找不到对应的文件。
如何去掉引用的工程
找到对应的子工程,点击删除,
如果是引用,没有复制,记得删除
Remove Reference
.某些情况下还会报找不到对应的架构,但framework导入没问题,删掉本地的DerivedData(如何删,不解释),command+k,clear一下项目,就ok了。