Xcode4中使用靜態庫
1. 創建一個工作區:".xcworkspace"
2. 將項目添加到工作區(新建/添加現有項目)
3. 向應用程序target添加靜態庫,從Workspace
4. 打開 “Build Settings” 標簽,設置 “User Header Search Paths” 項的值為“$(BUILT_PRODUCTS_DIR)”,並選中“Recursive”框
5. 設置“Other Linker Flags”項的值為“-ObjC”
6. 打開scheme,設置build順序,將靜態庫添加進來,並放在程序前面
7. 從靜態庫項目中拖動公共頭文件到應用程序項目,這些頭文件不需要被包括在target中
創建靜態庫
1. 將所有需要公開的頭文件在“Target Membership”中將其設置為“public”
2. 打開 “Build Settings” ,設置“InstallationDirectory”的值為“$(BUILT_PRODUCTS_DIR)”;並設置“SkipInstall”的值為“Yes”
3. 設置“Public Headers Folder Path”的值為 “$(TARGET_NAME)”
參考原文:http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/
下邊是各種使用經驗:
(一)
1、以xcode的靜態庫文件模板創建靜態庫文件;
2、注意類文件的命名方式,以免和工程下的類沖突;
3、把需要作為接口的頭文件聲明為public,在xcode的target membership設置里面;
4、在靜態庫文件的引用target里面設置靜態庫文件的安裝目錄為當前工程的編譯目錄下,使得當前工程目標能在此目錄下找到靜態庫文件,當前工程編譯目錄引用為$(BUILT_PRODUCTS_DIR);
5、設置靜態庫的公共頭文件目錄路徑,使之在當前工程編譯后放置於以靜態庫命名的文件目錄下,即使得第4步的能找得到靜態庫文件的接口;
6、如果靜態庫中存在Objective-C風格的類文件,需要在靜態庫的build-setting中的Other linkerflags中加上-ObjC,如果存在Category,還應加上-all_load或-force_load。
(二)
概要
- AppStore中的 iphone 程序不允許使用動態鏈接庫。
- 如果需要在隱藏代碼的前提下提供某些功能,可以使用靜態鏈接庫。
- 右擊target,選擇add -> newtarget
- 在彈出的 NewTarget 界面中選擇Cocoa Touch -> StaticLibrary ,為新 library 取個名字。
- 將源文件添加到這個庫。可以直接拖動現存源文件,也可以右擊 -> add。注意選擇新建的庫為添加的 target 。
- 設置原項目,令其使用新建的庫。
- 右擊原項目的 target ,選擇 getInfo 。
- 選擇 General 選項卡
- 向 linked libraries 中添加新創建的庫 (即添加 .a 文件)。
- 編譯新建的靜態庫以產生 .a 文件。(右擊靜態庫的 target ,選擇build)
- 編譯原項目,若可以調用靜態庫中的方法則添加成功。
- 可以直接刪除靜態庫中的源代碼,只提交鏈接庫文件(.a),這樣原項目仍然可以編譯執行。
- Mac OS 下的靜態鏈接庫文件與linux 同樣使用 .a 擴展名。
下邊的是
http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4
的漢化翻譯 加理解