Xcode中引用另一个项目及常见错误详解

开发中,某些情况下,需要在一个主工程中引用另一个工程,比如开发framework,然后在主工程中调试。
具体开发步骤:
1.将子工程copy到主工程目录下。

工程目录结构.jpeg

2.打开主工程,File->add Files to 找到需要应用的工程,然后加入。
选中的工程.jpeg

NOTE:1.引用的是工程目录,而不是项目目录。
2.某些情况下,引用以后,主工程中看不见子工程,重启下Xcode.可能是一个项目中
打开了对应的工程。

3.关联2个工程。正确加入后,主工程和子工程目录结构。

屏幕快照 2018-05-07 上午10.35.34.png

现在在子工程中(18.4.24-testFramework)写代码,主工程(18.5.6-集成ncnn)并没有关联。
引用项目步骤.jpeg

到此两个项目就关联起来了,某些情况下,报找不到子工程对应的头问题 xx.h.
就需要在主工程building settings 中,加入对应的头文件。
主工程中添加搜索文件目录.jpeg

我的习惯是,直接添加../主工程名字(如照片所示../18.5.6-集成ncnn) ,记得把non-recursive,修改为recursive
也可以添加对应的头文件。

按照以上步骤基本可以实现2个工程的编译了。(⊙o⊙)哦
某些情况下,还是报错。

错误处理

1.找不到对应架构(啥是架构自行google、百度)。


找不到对应的armv7.jpeg
  • 报无对应的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了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容