00 跨平台C++开发环境搭建——GNU+STL+Boost+wxWidget+OpenSceneGraph

Post date: 2012/4/3 上午 05:22:26

学了好长时间的C++了,鉴于对标准和设计模型模式的推崇,一直没有找到合适的GUI语言,也一直苦于GUI开发时我还要借助于Delphi,但是现在不一样了,花了一个周末整个跨平台的C++开发环境,编译器采用的MinGW(如果是Linux,就省了编译器的问题了),C++库我选择了STL(MinGW自带)和Boost,GUI我使用的是wxWidget,3D图像引擎我使用的OpenSceneGraph(鉴于先前有OpenGL的研究基础,最近在学习OpenSceneGraph),IDE使用的Code::Blocks。

貌似是年前的时候,我有一段时间想使用CodeBlocks,但是由于没时间配置环境一直没有使用,现在刚换了个工作,不在使用Linux环境,改为了Windows,编程环境使用的VS,但是用了一段时间后发现VS是很强大,在程序编译速度上和性能优化上,都比GUN在windows上强劲一些,但是它强大的让人郁闷,没有足够的时间就搞不明白VS,先前用VS的时候直到工作才知道makefile(别笑我)。VS本身的智能提示也不是非常强大,但是有个VAX(俗称西红柿),非常强大,写代码时不需要记住太多东西,根据提示可迅速的编写代码,就这样运用了一段时间后发现,离开了VAX,不会写代码了,到处是拼写错误,于是我改了。。。

我现在是使用的CodeBlocks,将编译器配置为MinGW,这样可以基本上支持标准C++,然后我用MinGW编译了Boost,然后配置到开发环境中。由于C++0x迟迟不出,而Java,C#的库功能迅速发展,一个纯C++程序员的开发速度成了很大问题,但是还好,有一群热心的C++大佬,帮我们封装了好多常用的功能库,就是现在的Boost,据说Boost的开发人员有很多就是C++标准委员会成员,而且Boost的测试机制非常完善,因此Boost还是C++业界内非常权威的。

接下来配置的就是GUI,说起GUI那是既让人喜又让人愁。我曾经打算学习过好多GUI,但是后来都被各种各样的GUI扩展打垮了。最初想学MFC的,当时还买了本很厚的MFC教程(也许是让书吓倒了),学了不到一半,我就崩溃了,MFC毕竟是上世纪的产物了,真后悔学MFC之前就学了C++Primer和设计模型,如果不先学这个的话应该还能学MFC的,毕竟业界还是有很多人使用MFC,尽管他们一直使劲的骂MFC,但另一边还是在使劲的用MFC,这里没有贬低MFC的意思,是我个人原因,不太喜欢大量宏的MFC。接下来想学的是QT,但是听说QT的开源而不完全免费后我就郁闷了,既然你开源了还那么小气,而且在class内还引入了slot,我觉得是对标准C++进行了扩展,当然可以说是对C++的发展,但是吧,我这个人很倔,就感觉这东西跟标准委员那些老头们说的不一样,很别扭,于是我很快的放弃了QT,哎,我适应能力太差了。后来工作后开发环境是Linux,大家都知道在Linux上基本是用不着GUI的,而且我个人也承认Linux下Vim开发就是最爽的。当时有个同事喜欢用GUI,然后用的是wxWidget,看了下wxWidget之后觉得wxWidget还行,代码整洁,结构虽然跟MFC很接近但是它与MFC却又质的差别,首先wxWidget实现了跨平台,MFC只能用在windows下;其次,wxWidget基本上遵循了标准,代码比MFC清洁很多,也少了很多宏;再次,我对wxWidget不了解,没听多少人骂它,所以学起来也没那么抵触(被那些自己学会了疯狂骂MFC的人害的。。)。于是决定学wxWidgets,但是由于工作不需要,也没有多少时间,就没有深入的研究,一直搁置了起来。后来听说了delphi,下了个delphi看了下,做界面真的很帅,而且真跟传说的差不多,delphi具有脚本语言一样的开发速度和编译语言一样的执行速度,(其实开发速度我没感觉出来,执行速度和界面的确了不得),于是,有很长一段时间没事就整delphi,后来delphi弄的熟悉写后下载了个C++ Builder6.0,这个版本的C++跟Delphi7的界面是一样的,用起来也一样,只不过是编写语言不同,还好,研究了一段时间后发现C++ Buider也跟VC差不多,做了好多扩展,于是也放弃了Borland方向的研究(我麻烦事太多了)。直到现在,换了工作了,开发环境又从Linux换到了windows,呵呵,终于忍不住学GUI了,最后决定用CodeBlocks搭建环境后毅然选择了wxWidget,哎,不管怎样了,坚持下去总是好的,用多了也就接受现实了(感觉还有些不太满意,毕竟还有好多宏,不过比MFC少多了已经)。。。

最后就是OpenSceneGraph了,这是一个基于OpenGL的3D图像引擎,是跨平台的,跟Ogre啥的都差不多少,在工作过程中研究了下,发现封装的还是很精致的,如果对3D有兴趣的话,建议学完OpenGL之后可以学习下OSG。

就这样编译了两天,环境搭建好了,郁闷哦。。。

感觉能确立下个环境来还是非常好的,心情不错,来记录下,以后有什么代码或者研究还会回来写得。。。