SDL+Rose:让跨平台编程返璞归真

rose-sdk 发布于 2015/07/06 22:17
阅读 987
收藏 4

十多年前,只要学会C/C++,基本就能写所有平台程序。十多年后的今天,说要用C/C++写各平台程序,不少人会认为不可能,原因很多,像平台原生语言就不是C/C++,程序要求部署灵活。——但是,程序员选择何种编程技术往往不能只听平台供应商,它们更多只考虑自个平台利益,当要写的是跨平台程序时,往往要求助开源社区,SDL+Rose就是开源社区提供的一种C/C++跨平台解决方案。

SDL、Rose是什么
SDL(http://www.libsdl.org)。Simple DirectMedia Layer缩写,是一个开源跨平台开发库,它向上层提供纯C接口,接口内容主要是三类,图像、声音和事件。SDL是个知名开源项目,市面上已存在大量基于它写的应用程序。

Rose(https://github.com/freeors/Rose)。Request Online SErvice缩写,是一个开源跨平台开发库,它基于SDL,向上层提供更高级接口。Rose出现的根本原因是认为SDL提供的接口太低级,直接基于SDL进行开发,要做的重复性工作还是太多。它的接口内容分为基本模块和应用模块,基本模块包括窗口系统、框架逻辑、处理配置、动画、字符串及图文混排、国际化、网络;应用模块包括像聊天。

在调用上,应用绝大部分是调用Rose提供的接口,于是在说到这构架时往往简称为Rose架构。

Rose架构的特色
一次编写跨平台运行
是否记得当年微软号称能让Windows和Win Phone源码兼容时,你是什么心情?但是,现在我们要兼容的不仅仅是Windows、Win Phone,还包括iOS、Android、Linux、Mac OS X!“一次编写跨平台运行”的目标就是要做到在这些操作系统上所有源码兼容,即同一份源代码可以不改一个字母就在这些平台上编译并运行。各平台上的差别只是编写把这些源文件组织在一块的工程文件,像Windows是*.sln,iOS/Mac OS X是*.xcodeproj。

编程语言集中在C/C++
Rose架构要让达到这么个目标:只要你会C/C++,不会Object-C一样能进行iOS/Mac OS X开发,不会Java一样能进行Android开发,而且写出程序的执行效率不比原生语言差,有的还要超过, 像Android(Android原生语言是Java,编写存在众多复杂算法的应用时,C/C++执行效率明显要高了)。集中在C/C++并不是只会用C/C++,像为部署灵活使用Lua,要让编写服务器简洁、易维护使用PHP,但使用这些语言目的已不是为跨平台,而是为更灵活开发应用。

基于Rose架构的编写流程
Rose架构特点是一份源码就要运行在各平台,在这些支持的平台中首先要选择一种进行开发的平台,这平台要满足几点要求。
1、拥有功能完善的C/C++调试工具。
2、拥有功能完善的C/C++编辑工具。
3、拥有众多辅助开发的小工具,像目录比较,查看原始声音波形,等等。
综合这些因素,基本只能锁定是Windows,而开发的IDE就是Visual Studio。

要注意到这么个事实,虽然MSC、GCC、LLVM都提供了对C/C++支持,但它们在具体一些语法上存在差别(在这方面我做的一个汇总:http://www.freeors.com/bbs/forum.php?mod=viewthread&tid=21288&extra=page%3D1)。这些差别是很细微,但会造成即使MSC通过编译,代码存在其它编译器不支持的语法。基于如此,选择的第二个编译器是LLVM,选它的原因是相比于GCC,LLVM有着功能更完善IDE:XCode。

一旦LLVM通过编译,由于LLVM和GCC非常相像,GCC编译时一般不会再有问题。

综上所述,基于Rose架构开发平台的顺序:1)Windows;2)iOS;3)Android;4)其它。Rose主推的开发工具是Visual Studio,假设一个月要发布一新版本,基本可做到25天都在Windows开发,2天花在其它平台(就是编译),剩下3天做发布前测试。

Rose架构现状
SDL稳定版是2.0.3,前几天已发布2.0.4 RC2,要没意外7月会发布2.0.4,该版本将支持Win Phone8,解决些其它平台存在的BUG,像iOS旋转。很多人存在这么个认为,SDL只是开发2D应用,但其实早在2.0.3就已向外提供3D接口,只不过是OpenGL格式,和它的图像、声音、事件一样,由于低级,应用要调用它们至少得深入理解下SDL。

相比SDL,Rose是个初生开源项目,也不大为人知。它刚发布v0.0.7,因为新,基本是一个月更新一版,到现在接口框架基本算是稳定了。为降低开发人员使用Rose门槛,同时会提供一个跨平台应用,Rose Studio。

________________________________________________
“一次编写跨平台运行”,这除了开发、维护上便利,同时让公司节省成本。按当前开发app普遍方法,一个平台配置一个开发人员,这意味着同时开发Windows、iOS、Android那至少需要三个程序员,改为用Rose后,一个就够了。“编程语言集中在C/C++”,这让程序员节省了学习新语言开销。掌握并融通一门新语言不是只靠一、两个月就够的,而学习新语言目的是什么,只是在B平台写出A平台同样功能吗,这纯粹是在杀掉程序员时间,程序员应该尽可能把时间集中在开发自个应用须要的功能上。

加载中
0
李文轩
李文轩
支持,C/C++本就应是万能的
返回顶部
顶部