在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. // Test linking with curl
  3. {
  4. curl_global_init(CURL_GLOBAL_DEFAULT);
  5. CURL* handle = curl_easy_init();
  6. curl_easy_cleanup(handle);
  7. }

6:编译,不出意外的话,编译应该会成功,如果不成功,请仔细检查上面每一步的操作是否正确。

好了,这就写完了,其实如果你不想编译,也可以使用别人已经编译好的头文件和.a文件,但是那样就不方便调试,根据自己喜好去选择吧。

如果你要使用别人编译好的,或者更简单的编译方式可以参考http://code.google.com/p/ios-static-libraries/,不过得注意在不同的构架下使用不同的头文件和.a文件(自己在header search paths和library search paths中设置不同的构架即可),也可以使用lipo工具将几种构架合并起来。

相关推荐
虾球xz1 小时前
游戏引擎学习第290天:完成分离渲染
c++·人工智能·学习·游戏引擎
虾球xz1 小时前
游戏引擎学习第285天:“Traversables 的事务性占用”
c++·学习·游戏引擎
虾球xz2 小时前
游戏引擎学习第280天:精简化的流式实体sim
数据库·c++·学习·游戏引擎
FAREWELL000752 小时前
Unity基础学习(十五)核心系统——音效系统
学习·unity·c#·游戏引擎
虾球xz2 小时前
游戏引擎学习第281天:在房间之间为摄像机添加动画效果
c++·人工智能·学习·游戏引擎
向宇it4 小时前
【unity游戏开发——编辑器扩展】使用MenuItem自定义菜单栏拓展
开发语言·ui·unity·c#·编辑器·游戏引擎
动感光博4 小时前
Unity碰撞检测(射线投射、胶囊体投射)、交互(图层、掩码)
unity·c#·游戏引擎·游戏程序·动画
benben0445 小时前
Unity3D仿星露谷物语开发44之收集农作物
前端·游戏·unity·游戏引擎
动感光博6 小时前
Unity(URP渲染管线)的后处理、动画制作、虚拟相机(Virtual Camera)
开发语言·人工智能·计算机视觉·unity·c#·游戏引擎
虾球xz15 小时前
游戏引擎学习第286天:开始解耦实体行为
c++·人工智能·学习·游戏引擎