在cocos2d-x中編譯/調試curl庫

在cocos2d-x中編譯/調試curl庫

環境參數
系統:mac os x10.6
xocde:4.0.2
ios sdk:4.3
curl:curl-7.22.0
 
不知道curl是做什麼的,就自己google了,這裏暫時不糾結這個問題。
 
因一個cocos2d-x項目需要使用curl庫,但是curl官方並沒有直接支持ios,所以需要自己編譯,另外,爲了方便調試,所以不直接使用變異好的.a文件,而是在項目中引入curl靜態庫。

下載curl庫

官方有各種語言版本的curl庫,這裏我們選擇C\C++版本的;這裏我們下載最新的curl-7.22.0版本,下載之後解壓可以得到curl-7.22.0目錄。
下載地址:http://curl.haxx.se/download.html

配置curl

1:從終端進入解壓得到的curl-7.22.0文件夾“cd curl-7.22.0”
2:輸入如下命令,完成curl的配置:
  1. export CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.0.1 
  2. export CFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" 
  3. export LDFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -Wl,-syslibroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" 
  4. export CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp 
  5. ./configure --disable-shared --without-ssl --without-libssh2 --without-ca-bundle --without-ldap --disable-ldap --host=arm-apple-darwin10 
注意:這裏需要根據自己的實際環境設置ios sdk的安裝路徑,同時,這裏僅僅是配置了單獨的curl庫,如果需要使用ssl等其他功能,配置參數需要修改,這裏暫時不使用。^_^
完成之後出現如下所示,則表示設置正確:

編譯curl

1:在xcode中新建curl工程:File->New Project->iOS->Library->Cocoa Touch Static Library;
2:添加文件:添加文件:Add->Existing Files (選擇curl-7.22.0中 "src"文件夾),Add->Existing Files (選擇curl-7.22.0中 "lib"文件夾);
3:刪除文件:從項目中刪除 "src/macos" 文件夾(Delete->Delete references),並且去掉Makefile and Makefile.inc(共四個,src和lib中各兩個)的”target”標誌;
4:設置編譯選項,打開項目的“build”選項,查找“OTHER C FLAGS”,並設置如下參數:
-DHAVE_CONFIG_H -I/xxx/curl-7.22.0/include -I/xxx/curl-7.22.0/lib
注意:“/xxx/curl-7.22.0”即是剛剛解壓的curl-7.22.0的路徑
5:編譯,應該會成功,不成功則檢查每一步是否設置正確了。

在cocos2d-x項目中加入curl靜態庫

1:新建cocos2d-x項目,這個不多說了。
2:將上面準備好的curl項目中的“curl.xcodeproj”拖到cocos2d-x的項目中,如下圖所示:

3:添加鏈接庫:在cocos2d-x的項目中,打開“target”,選擇“build phase”,找到“link library with…”,加添,在“workspace”中可以找到我們剛剛準備的“libcurl.a”,添加進來。
4:設置頭文件搜索路徑:在cocos2d-x項目中找到build setting中的header search path,並設置路徑爲剛纔解壓的curl路徑中的“curl-7.22.0/include”,注意,這個要根據自己實際的路徑來設置。
5:測試curl庫是否添加成功,在cocos2d-x項目中的cpp文件中添加如下代碼:
  1. #include <curl/curl.h> 
  2.  
  3. // Test linking with curl 
  4.         curl_global_init(CURL_GLOBAL_DEFAULT); 
  5.         CURL* handle = curl_easy_init(); 
  6.         curl_easy_cleanup(handle); 
6:編譯,不出意外的話,編譯應該會成功,如果不成功,請仔細檢查上面每一步的操作是否正確。
 
好了,這就寫完了,其實如果你不想編譯,也可以使用別人已經編譯好的頭文件和.a文件,但是那樣就不方便調試,根據自己喜好去選擇吧。
 
如果你要使用別人編譯好的,或者更簡單的編譯方式可以參考http://code.google.com/p/ios-static-libraries/,不過得注意在不同的構架下使用不同的頭文件和.a文件(自己在header search paths和library search paths中設置不同的構架即可),也可以使用lipo工具將幾種構架合併起來。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章