xcode 靜態鏈接庫的問題


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。

 

(二)

概要

  1. AppStore中的 iphone 程序不允許使用動態鏈接庫。 
  2. 如果需要在隱藏代碼的前提下提供某些功能,可以使用靜態鏈接庫。

XCode項目中添加靜態庫的方法
  1. 右擊target,選擇add -> newtarget 
  2. 在彈出的 NewTarget 界面中選擇Cocoa Touch -> StaticLibrary ,為新 library 取個名字。
  3. 將源文件添加到這個庫。可以直接拖動現存源文件,也可以右擊 -> add。注意選擇新建的庫為添加的 target 。
  4. 設置原項目,令其使用新建的庫。
    • 右擊原項目的 target ,選擇 getInfo 。
    • 選擇 General 選項卡
    • 向 linked libraries 中添加新創建的庫 (即添加 .a 文件)。
  5. 編譯新建的靜態庫以產生 .a 文件。(右擊靜態庫的 target ,選擇build)
  6. 編譯原項目,若可以調用靜態庫中的方法則添加成功。

怎樣隱藏靜態庫的代碼 
  1. 可以直接刪除靜態庫中的源代碼,只提交鏈接庫文件(.a),這樣原項目仍然可以編譯執行。

備注:
  1. Mac OS 下的靜態鏈接庫文件與linux 同樣使用 .a 擴展名。
參考資料

原參考處

 

下邊的是 

 

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4

的漢化翻譯 加理解

http://xiaoruanjian.iteye.com/blog/912478


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM