Build Static Library in Xcode 4
![]() |
Cocoa Touch Static Library |
寫程式總是一直提醒自己要 DRY - Don't Repeat Yourself,上從 Class Name 到 Method Name 到寫程式的邏輯都要謹記在心。因為當重複撰寫一樣的邏輯,在維護上就會變成做重複事情,一來浪費自己的時間,二來如果自己疏忽會造成忘記要修改,三來也會造成一起開發夥伴的困擾。
伴隨著 Project 的開發,會發現有些程式是可以模組化,讓它獨立出來變成單一 Xcode Project,除了維持它核心功能外,還能產生 Static Library 讓需要用到它的 Project 可以引用。如此一來 Static LIbrary 也可以重複使用在更多更多的 Project 上。
在 Xcode 的 Project Template 可以輕鬆完成這樣的設定, 將整個 Project 包裝起來成為 *.a 檔案,如此搭配釋放出的 Header Files,Client 端只要看懂 Header Files 不用知道實做細節,也就可以使用。操作步驟:
- 選擇 Cocoa Touch Static Library。
- 在 Build Phases 加入 Copy Headers 步驟,將要 Release 的 Header Files 挑選出來,放置在 Public 區塊。
- 回到 Build Settings 找到 Packing > Public Headers Folder Path,這邊是告知在包裝時候會將 Headers Files 放置位置。
- 因為 Xcode project 建置好的位置路徑很深,如果每次路徑要走那麼遠取用檔案也很不方便,於是在 Build Phases 可以加入 Run Script,在裡面撰寫將檔案取出來放置在桌面上的 Scripts。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DESKTOP_DIR="/Users/$(whoami)/Desktop/XXXSDK" | |
rm -r $DESKTOP_DIR | |
mkdir -p $DESKTOP_DIR | |
cp -r "${BUILT_PRODUCTS_DIR}/usr/local/include" "${DESKTOP_DIR}/include/" | |
cp "${BUILT_PRODUCTS_DIR}/libXXXSDK.a" "${DESKTOP_DIR}/" |
當以上設定完畢,程式碼撰寫完,跑 Build & Run 就可以將整個 Project 的程式包裝產生 Static Library 了。
引用方的 Xcode Project
到 Build Phases > Link Binary With Libraries 將這份 libXXX.a 加入進去。在 Build Settings 在 Library Search Paths 加入 "$(SRCROOT)/XXXSDK" 設定,讓編譯時候找得到 Library。
透過以上拆分,即可以將常用或是核心的功能獨立出來成為新的 Project,維護上和重複使用上更佳理想。而建立 Static Library 的 Project 就要思考如何在維護更新上將文件寫的更明確,讓引用方可以更瞭解現在手頭上的版本跟最新版的差異,才能進入持續開發、發佈、使用的開發週期。
TODO: 會發現這樣在發佈程式時候,隨著 Header Files 會越來越多,在引用方也要維護與攜帶這些 Headers 檔案,似乎應該還要找更好的包裝方式。
透過以上拆分,即可以將常用或是核心的功能獨立出來成為新的 Project,維護上和重複使用上更佳理想。而建立 Static Library 的 Project 就要思考如何在維護更新上將文件寫的更明確,讓引用方可以更瞭解現在手頭上的版本跟最新版的差異,才能進入持續開發、發佈、使用的開發週期。
TODO: 會發現這樣在發佈程式時候,隨著 Header Files 會越來越多,在引用方也要維護與攜帶這些 Headers 檔案,似乎應該還要找更好的包裝方式。
Comments
Post a Comment