Xcode构建自定义静态库(libname.a)c++
小知识:Linux静态库*.a,动态库*.so,window静态库*.lib,动态库*.dlljson
1. 建立工程选择iOS->Framework&Library->CocoaTouchStaticLibrary。xcode
2. 删除新建工程时自动建立的.h .m文件,导入自定义头文件及源文件。ui
3. 选择菜单Product->Scheme->Edit Scheme->Run->Build Configuration设置成release(切记此步骤,否则构建的是debug版的.a文件,其它工做引入该静态库时会报Undefined symbols for architecture i386错误)。debug
4. 选择不一样设备类型分别构建真机(iOS Device)及模拟器(iPhone 6/iPad2/iPhone4s等)静态库文件(执行build后可在Products下面看到libname.a文件,黑色表示生成成功,红色未生成)。code
Xcode项目导入第三方开发库ip
1. 选择项目中的工程文件,设置工程属性General->Linked Frameworks and Libraries-> + ->Add Other… ->选择第三方静态库文件(.a)。开发
2. 设置头文件搜索路径,设置工程属性 Build Settings->Search Paths->Head Search Paths-> + ->设置第三方库头文件目录。it
使用lipo指令io
1. 查看静态库模块的体系结构(终端->cd到.a文件所在目录 -> lipo -info 静态库.a);
2. 合并模拟器及真机通用静态库(终端-> lipo -create 模拟器静态库所在路径/静态库.a 真机静态库所在路径/静态库.a -output 通用静态库输出路径/静态库.a);
注意事项:
1.当静态库模块使用到C++11等一些特殊的语音特性时或该模块有引用其它外部库且外部库用到C++11等特性时,构建静态库及使用该静态库的模块都得统一设置C++编译选项,如json库就有用到C++11特性(工程属性->Build Settings->Apple LLVM 6.1 - Language - c++ -> C++ Language Dialect 及C++ Standard Library);
2.在目标工程若添加同一静态库几回,记得清除未使用到的静态库的链接路径(工程属性->Build Settings -> Search Paths ->Library Search Paths ),xcode搜索静态库.a文件的方法是从上往下查找库路径列表;