用的是gcc編譯器或者xcode編譯就可以。
在開發過程中,經常會碰到一些在不同工程中經常用到的部分,把這些部分抽取出來做成一個靜態庫往往是一個比較好的做法。xcode裡就有製作靜態庫的模板,相關的製作步驟網上也有很多,但在實際的操作中,還是有不少細節方面需要注意。以下是我碰到的一些問題總結。
1.編譯release版本的庫
在“ManageSchemes”中,將“BuildConfiguration”的選項改為“Release”即可。如圖:
2.靜態庫中包含category
如果你在靜態庫工程中使用了category,那麼你可能會碰到連結問題,解決的辦法就是需要同時在生成靜態庫的工程和使用靜態庫的工程中使用“-all_load”編譯選項,即在對應target的"BuildSettings"中的“OtherLinkerFlags”選項新增“-all_load”。注意:使用靜態庫的工程中是一定要加該編譯選項的!!至於生成靜態庫的工程中加不加沒有試過,不過建議還是加上該編譯選項。
3.靜態庫支援的SDK版本
為了使自己的靜態庫儘可能多的支援IOS的系統版本,應該在"IOSDeploymentTarget"這個選項中選擇自己所需的IOS版本。設定如下圖,這個是我的靜態庫工程中的配置,紅框框起來的是我修改過的選項。
4.自動複製標頭檔案
在工程對應的target的“BuildPhases”下新增“CopyHeaders”的選項。該選項預設是沒有的,新增方法是點選下方的“AddBuildPhase”按鈕後選擇後即可新增。該選項下有3個子選項,分別是Public,Private,Project。透過點選下方的加號,可以將工程中的標頭檔案新增到“Project”中,在其中的對應標頭檔案點選右鍵,選擇“MovetoPublicGroup”,當頭檔案移到“Pulic”後,編譯工程以後,在工程編譯後.a檔案所在的路徑下,會同時出現一個"usr/local/include"的資料夾,其中的標頭檔案就是publicgroup中的標頭檔案。這時只需將.a檔案和這個路徑下的標頭檔案複製到所需工程檔案即可。
用的是gcc編譯器或者xcode編譯就可以。
在開發過程中,經常會碰到一些在不同工程中經常用到的部分,把這些部分抽取出來做成一個靜態庫往往是一個比較好的做法。xcode裡就有製作靜態庫的模板,相關的製作步驟網上也有很多,但在實際的操作中,還是有不少細節方面需要注意。以下是我碰到的一些問題總結。
1.編譯release版本的庫
在“ManageSchemes”中,將“BuildConfiguration”的選項改為“Release”即可。如圖:
2.靜態庫中包含category
如果你在靜態庫工程中使用了category,那麼你可能會碰到連結問題,解決的辦法就是需要同時在生成靜態庫的工程和使用靜態庫的工程中使用“-all_load”編譯選項,即在對應target的"BuildSettings"中的“OtherLinkerFlags”選項新增“-all_load”。注意:使用靜態庫的工程中是一定要加該編譯選項的!!至於生成靜態庫的工程中加不加沒有試過,不過建議還是加上該編譯選項。
3.靜態庫支援的SDK版本
為了使自己的靜態庫儘可能多的支援IOS的系統版本,應該在"IOSDeploymentTarget"這個選項中選擇自己所需的IOS版本。設定如下圖,這個是我的靜態庫工程中的配置,紅框框起來的是我修改過的選項。
4.自動複製標頭檔案
在工程對應的target的“BuildPhases”下新增“CopyHeaders”的選項。該選項預設是沒有的,新增方法是點選下方的“AddBuildPhase”按鈕後選擇後即可新增。該選項下有3個子選項,分別是Public,Private,Project。透過點選下方的加號,可以將工程中的標頭檔案新增到“Project”中,在其中的對應標頭檔案點選右鍵,選擇“MovetoPublicGroup”,當頭檔案移到“Pulic”後,編譯工程以後,在工程編譯後.a檔案所在的路徑下,會同時出現一個"usr/local/include"的資料夾,其中的標頭檔案就是publicgroup中的標頭檔案。這時只需將.a檔案和這個路徑下的標頭檔案複製到所需工程檔案即可。