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文件的方法是從上往下查找庫路徑列表;