2020-09-12 xcode将一个工程B拖到另一个工程A中

将一个工程B拖到另一个工程A中:

1.关闭B,直接从路径里把A的xcodeproj拖到B的工程下面,关闭xcode重新打开。

2.打开A-TARGETS- Build Phases -Dependencies 添加B

3.建立一个软链接 从B的路径到A的路径。

ln -s 源文件 目标文件。


库介绍:

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。

iOS中的静态库有 .a 和 .framework两种形式;动态库有.dylib 和 .framework 形式,后来.dylib动态库又被苹果替换成.tbd的形式。.a是静态库文件,是由单个.c(.m,.cpp)编译生成的目标文件压缩而成的,可以解压出来,但解压出来以后也只能看到目标文件,用objdump等工具可以查看反汇编,看不到源代码。在VS里面,C和C++封装成.lib和.dll,然后被其他工程调用。

在xcode里面怎么封装呢?

Mac OSX下 Xcode创建C++动态库:参考:

https://blog.csdn.net/qq981378640/article/details/53908061

查看导出的接口:

otool -- 分析可执行文件和dylib的依赖引用关系,常用命令 otool -L

nm -- 分析一个动态库的导出函数(exported symbols)

nm -a libz.1.2.5.dylib

Xcode Search Paths相关配置: 参考:

https://www.jianshu.com/p/9f9c1fd2e8b5

Framework Search Paths 管理导入的*.framework的路径

Library Search Paths 管理导入的*.a的路径

Header Search Paths 管理导入的头文件的路径


导入库的时候自动生成的的路径:$(PROJECT_DIR)/XcodeForSeachPathTest/ThirdLib/zhenLib,

手动拖动的路径:

"$(SRCROOT)/../Frameworks/zhenFW/zhenFW.framework",

很明显的区别是手动拖得有双引号,双引号的作用是如果在路径中有空格,可以识别该路径。没有双引号但是路径中有空格,我们发现它会自动变成两个路径。


在BuildSettings 页面中的Search Paths一节就是用来设置头文件路径。

相关的配置项用红框框起来了,共有三个配置项:

Header Search Paths

User Header Search Paths

Always Search User Paths

xcode的头文件路径有两种设置,一种是Header Search Paths,另一种是User Header Search Paths。两者对应两个include方式:

#include <boost/noncopyable.hpp> // 通过Header Search Paths搜索

#include"boost/noncpyable.hpp"// 通过User Header SearchPaths搜索

前者生成类似“-I path/to/header”的编译选项,后者生成类似“-iquote path/to/header”。 

如果在User Header Search Paths设好了路径,但是代码用include <>包含头文件,编译会报错。这时把Always Search UserPaths设置成Yes,强制include <>也在User Header Search Paths搜索。 

Always SearchUser Paths设置成Yes后,User Header Search Paths生成的编译选项变成“-I path/to/header”,而且会放在Header Search Paths的前面,所以User Header Search Paths会优先搜索。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容