IOS打包静态库以及C、C++、OC的混编

一、打包静态库

1.创建一个名为GenerateStaticLibrary(名称可以自主命名)的静态库工程

图1-1

2.删除自动生成的GenerateStaticLibrary.h和GenerateStaticLibrary.m文件

图1-2

3.导入或新建静态库的代码(我这里新建了C文件和C++文件)

图1-3

4.如果需要C++混编,需要修改Compile Sources As为Objective-C++,否则在导入静态库的项目中混编C++代码时,编译器报错

图1-4

5.修改 Product->Scheme-> Edit Scheme 为 Release

图1-5

6.选择真机调试模式,Command + B进行编译

图1-6

7.再用模拟器调试模式,Command + B进行编译

图1-7

8.得到的.a文件在Products文件目录下,选中.a文件 右键 show in finder

图1-8

9.Release-iphoneos和Release-iphonesimulator文件目录下的.a文件即是我们需要的对应真机和模拟器上使用的静态库文件

图1-9

10.将连个.a文件移动到一个自定义的目录下,并重命名为两个不一样的文件名

图1-10

11.因为两个静态库文件只能分别对应使用与真机和模拟器,所以在使用的过程中建议将两个文件合并为一个文件,以便通过一个静态库文件可以在支持在真机和模拟器上运行

合并命令如下:

lipo -create /文件路径/libGenerateStaticLibrary_simulator.a /文件路径/libGenerateStaticLibrary.a -output /文件路径/libGenerateStaticLibraryUniversal.a

二、在Xcode中导入静态库

1.将.a文件和头文件导入到项目中。需要注意的是在添加文件时,选项的选中

图2-1

3.如果涉及到C++代码的混编,则需要把使用到C++代码的.m文件的后缀改为.mm

图2-2

三、编译静态库时自动导出.h头文件

在上述编译静态库时,并没有自动导出头文件。在使用的时候,需要手动筛选出所有的头文件,这显然是一件很麻烦的事。下面的内容是在编译静态库时,自动导出头文件的操作步骤。

1.在Build Phases中,点击"+"按钮,用以添加“New Copy File Phase”

图3-1

2.在“Copy Files”中修改红框标注的Subpath的值,例如修改为“include/$(PRODUCT_NAME)/C”,最后导出的文件夹名称就是“C”

图3-2

3.点击“+”,为“Copy Files”添加头文件

图3-3

4.重复1,2,3步骤,添加需要的文件夹目录

图3-4

5.按下Command + B进行编译之后,就可以自动导出头文件到include文件夹

图3-5

你可能感兴趣的:(IOS打包静态库以及C、C++、OC的混编)