一、打包静态库
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