您的位置:首页 > 其它

aumenu在XCode(MacOS/IPhone)下的编译

2009-11-05 09:35 288 查看
1:编译XCode中将SDL,SDL_image,SDL_net(或者在网上下载),加入了SDL_image,必须加入MobileCoreServices.framework

2:将SDL,SDL_image,SDL_net下的build/Development目录拷贝到~/Libary/Frameworks

3:auogr/gdal/cpl_config.h文件在MAC和windows下不同,注意区分。简单方式就是在cygwin下make一次,产生不同OS下的cpl_config.h

4:SDL1.2和1.3版本有很多api已经变了

5:创建MacOS下的工程,选择application-->Carbon C++ Application

6:创建IPhone下的工程,选择IphoneOS-->application-->Opengl-es Application

7: 针对iphone在xcode中的开发,其预编译宏可写入到工程下面的pch文件中(在 XCode 每新建一个工程,都会有一个相应的后缀名为 .pch 的预编译头件生成,在里面增加预编译宏,也可以在project中设置)

8: MACOS升级到10.6后的后续操作

a.必须将xcode升级,xcode的最新版本在snow leopard安装盘上

b.重新安装Iphone SDK

c.在Iphone SDK安装盘中,包含2.0到3.0的所有SDK,但默认安装时只安装3.0版本(最新版本如果为3.0),其他SDK在option packages中.在安装其他版本SDK时,如果选择默认安装不知什么原因xcode不能找到,此时请将SDK安装到指定目录下/developer/目录下,而不是根目录下

d.10.5下的SDL版本可运行,但在10.6下有可能不能运行,此时请到www.libsdl.org中下载最新的SDL版本才行

e. 重新安装数字证书,安装方法请见http://bbs.weiphone.com/read.php?tid=421187&fpage=1&page=1。请注意,如果需要联机调试的话,步骤5种的脚本有点小错误,中间需要加几个空格,正确脚本如下:

export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

if [ "${PLATFORM_NAME}" == "iphoneos" ]; then

/Developer/iphoneentitlements30/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";

codesign -f -s "iPhone developer" --resource-rules "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/ResourceRules.plist" /

--entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"

fi

经测试,上面脚本针对每个应用程序只需要执行一次就可以了

f. 10.6和10.5下的SDK3.0 不一样,需要重新下载

g. 如果xcode的organizer中显示itouch为"Could not support development",此时,需重新启动一次itouch即可

9:for XcodeIphone工程,除了删除对应的.m文件,resources下只保留info.plist文件,同时应该修改对应的info.plist文件,将Main nib file base name项的值删除

10.SDL_image提高的Iphone版本中代码有bug,函数LoadImageFromRWops不能显示图片,按如下方式修改后ok

do
{
bytes_read = SDL_RWread(rw_ops, temp_buffer, 1, block_size);
[ns_data appendBytes:temp_buffer length:bytes_read];
} while(bytes_read > 0);
ui_image = [[UIImage alloc] initWithData:ns_data];
if(NULL == ui_image)
{
return NULL;
}

11:在itouch中,如果只创建一般窗口,则在最上面将会显示系统状态栏(时间,电量等),而SDL在创建时是按照全屏幕创建的,而在鼠标获取时,坐标点则是从状态栏后面开始计数的,这就造成有坐标差,故在启动时,需要设置AUGFX_SCREEN_NOFRAME和AUGFX_SCREEN_FULLSCREEN参数,如下种:

m_gfx->initMode(AUC_WIDTH,AUC_HEIGHT,augfxGetFormatFromBpp(AUC_BPPNUM),VIDMODEFLAGS)

12:itouch的应用程序一般不能读取该应用程序目录外的目录,可以将资源文件放入到工程中,在打包时会将这些资源文件与应用程序一起打包,同时放在同一个目录下的。目前还不清楚资源文件如何组织目录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: