如果你下載了MailCore,那麼你下載可能在為編譯MailCore而苦惱。
reMail被Google收購後,終於開源了。儘管它運行時也會出錯(崩潰) ,但經過簡單的處理後,它好歹還是編譯通過了。 由於reMail使用了MailCore架構,因此,我們可以從reMail中獲得一個可編譯的MailCore架構。
根據reMail安裝指南,reMail需要安裝 Mercurial和Git,如果你的機器上沒有安裝這兩個東西,你可以在這裡下載它們:
Mercurial:http://mercurial.selenic.com/
Git:http://code.google.com/p/git-osx-installer/
然後,我們就可以下載reMail項目了:
hg clone https://remail-iphone.googlecode.com/hg/remail-iphone
進入下載目錄remail-iphone,運行指令碼:
sh pull_dependencies.sh
該命令會自動下載reMail項目依賴的兩個主要架構three20和MailCore。 這兩個整個過程會比較長(1個多小時),大家做好心理準備。
pull_dependencies.sh指令碼執行完畢,可以在 remail-iphone的同級目錄下,看到兩個新增的目錄:three20合MailCore,其中包含了兩個架構的源檔案。
一、編譯Remail
開啟ReMailIPhone.xcodeproj,Scheme選擇“ReMail”,Build。
由於 Xcode4.2的一個bug,當編譯到CTCoreFolder.m檔案時,編譯器會報一個錯誤:
Implicit declaration of function 'uid_list_to_env_list' is invalid in C99
這是由於,當編譯器在看見函數'uid_list_to_env_list'定義時,未發現該函數原型。解決方案是在函數定義之前加入函數原型聲明。
注意:要解決此錯誤,可以把函數原型插入到類的interface聲明內(.h標頭檔),也可以把函數原型插入到類的implementation語句之前(.m檔案)。
開啟CTCoreFolder.h標頭檔,在@end語句之前插入函數原型聲明,即可解決此錯誤。
Build,ReMail即可在模擬器中運行。
二、拷貝MailCore項目
現在,可以把MailCore項目移植到你的Xcode項目中了。
建立Xcode項目(本例中的項目名稱未TestApp),將MailCore整個目錄拷貝到新項目的檔案夾下(在Finder中操作),如所示:
--TestApp
----MailCore
----TestApp
----TestApp.xodeproj
將MailCore檔案夾從的Finder視窗拖到TestApp的Xcode出口中
。開啟TestApp的Build Phases視窗,將MailCore項目增加為TestApp的依賴項目(子項目),如所示:
在LinkedBinary With Libraries中增加如下架構和庫:
轉到Build Settings視窗,在Header Search Paths中增加如下標頭檔路徑:
注意:勾選Recursive選擇。
編譯TestApp,如果沒有任何錯誤,表明MailCore架構添加成功。