好久没有写博客了,想起之前信誓旦旦的说经常更新,觉得自己咋这么不靠谱啊。


    CEGUI是一个图形用户界面库,面向对象,基于OPENGL或者DIRECTX渲染,也可基于OGRE等更高级的图形库进行渲染。其产生的目的主要是方便UI的编写,让程序员们从繁琐的界面编码中解放出来。听起来确实是个非常高大上的东西。

    于是费了九牛二虎之力在网上搜罗各种资料,下载cegui库,然后又发现一个非常牛逼的东西——CMAKE。好吧,其实之前就已经知道这个东东了,但是一直没空去研究,包括什么makelist之类的也是如此。

    一开始发现包里面没有.sln的时候,就知道大事不妙,我手头上能用到的就只有vs,没有sln,好歹给个vcxproj吧,结果仍然是没有的。无奈,只得再去百度如何能够编译运行cegui,这时候cmake出现了。就像是抓住了救命稻草一般,我赶紧去研究cmake了,怎料下载了一个cmake的源码,竟然也不知如何编译。再在官网上看了一下,有二进制版本的,但只支持32位,不过下载之后可以安装,于是很欣喜的找了一篇教程开始研究了。

    有图形界面就是好,虽然刚开始完全是摸不着门路,但是多搞几次之后也就渐渐搞懂了。发现cegui还有个依赖库,赶紧去下载了,用cmake生成vs2012项目,编译,将生成的dependencies拷贝到cegui根目录(应该是CMakeList.txt中有设置,只会检索根目录)。然后生成cegui的vs工程,成功了,再编译了几次,修改一些地方,成功了。咦……问题是这些都是dll项目,没有samples在里面啊,于是开始用cmake生成samples的工程,结果就各种以失败告终。但是已经觉得这玩意儿太烂了,不想让人用就明说,干嘛搞这些东西折腾人啊。但是项目需要,还得硬着头皮研究下去,只能去看看cmake的语法了。网上中文的教程不多,到处看看,总算找到了问题所在,add_subdirectory(samples)有个条件判断,被跳过了。把条件直接去掉,重新生成工程,总算有了。编译成功,运行,提示选择渲染器,下拉列表是空的,怎么回事,赶紧百度,无果。只能在看代码了,总算发现是有个地方的宏开关没有,手动加上,编译报错,没有引入gl库。再次使用cmake,选择了宏,编译,提示了缺少gl库,再将gl库勾选,生成,编译,再将dependencies/bin加入环境变量中,终于可以了,真是不容易。对了,还有个CEGUI_BUILD_XMLPARSER_EXPAT需要勾选。

    CMAKE为什么好呢,1.跨平台,使用通用的cmake语法,能在不同的平台对应不同(版本)编译器生成相应的工程。2.设置宏、添加库等非常方便,查看也很清晰明了,需要什么直接勾选就行,工程中就直接添加了。3.比起做各种对应的工程,大大减少了包的大小和复杂度。4.在生成相应攻城的时候会帮你检查是否有缺少库,是否会导致编译失败等。

    不过那个图片解析和xml解析太烦了,必须要设置一个,我没设置,给了警告的,但是我没管,导致耽误了好多时间。

    CMAKE就到此为止了,非常麻烦,有空可以看看cmake的语法和makelist等东西。

    现在才刚刚开始CEGUI的学习……