Utensil按:这篇文章写的内容比当初想象的多,花的时间也长,暂时先把目前的进度贴上来。依然不整理走样的格式。但是,走样的也太难看了!!-_-| 大家对将来的pdf版要有信心……
本章的目的是讲述,如何实现在不依赖任何IDE[1]的情况下,使用gcc编译器在Windows、Linux、Mac OS三大平台上编译wxWidgets、wxWidgets的例子,以及利用wxWidgets提供的Bakefile支持来编译自己的wxWidgets程序。本章还涉及到了一些上下游的细节,一些初次尝试者会卡壳的地方。
为什么要自己编译wxWidgets这么麻烦?wxWidgets为什么不提供一个只需要点“下一步”的安装程序?为什么不提供一个IDE直接就支持wxWidgets,像安装完了VC++直接就能在里面写wxWidgets程序,就能运行,效果直接?
关于第一个和第二个问题,一个很大的原因是wxWidgets是跨平台的,在它作为一个类库发布的时候,你说它提供哪些平台上的安装程序好呢?事实上,wxWidgets主要是以源代码的形式发布的,伴随它的,还有各主要平台上的Makefile,甚至一些主要IDE的工程文件(比如VC的工程,从6.0到2005都有支持),这已经为我们编译它提供了相当的便利了。
倒也有人在做wxWidgets的打包工作,就我注意到的而言,其中一个是wxPack[2],另外一个是wxWidgets installation wizard[3],而且现在官网上也有了Windows下的Installer。我没有选择它们的原因是:我们不应当等待和依赖他人,而应该“自己动手,丰衣足食”,这是一个人起码的志气。而且,今天我们学会了(并习惯了)编译wxWidgets库,明天就能够编译Boost库、Linux内核等等等等,只要有源码,我们就能编出最新的库,编出最新的软件,还可以边改边编,这就是DIY的自在与乐趣。
话虽这么说,初次尝试时因为缺少指引而频频遭遇莫名其妙的错误实在让人气馁,我也曾经历过这个阶段,所幸坚持下来了,没有放弃对wxWidgets的学习,这也是为什么我希望能够为初学者们写一份清晰的指南。
至于第三个问题,就Windows下而言,wxDev-C++是一个不错的选择,它自带MinGW编译器,也帮你把wxWidgets编译好了,甚至在你新建一个wxWidgets工程时,帮你写好了该链接的库。你只需要看着wxWidgets的教程,开始编程,并点菜单编译,一切都为你打点好了。但我个人并不推荐wxDev-C++作为wxWidgets深入开发的IDE——它是用Delphi写的,只能在Windows下运行,即它不是跨平台的,而且它的RAD部份也过于像VB的思维,而不是更利于跨平台开发的Sizer思维,甚至它可能娇惯你写出不能跨平台的代码,还有,它没有提供太多我需要IDE提供的功能。下一章我将介绍我推荐的IDE和RAD工具——Code::Blocks和wxFormBuilder,它们都是用wxWidgets写成,好用、开源、跨平台、免费。
wxWidgets是以源代码的形式发布的。通常我们使用它的稳定版。本文写作的时候的稳定版是2.8.7,而2.9.0即将推出。如果想试用最新的功能,又不怕它的Bug,可以玩玩最新的wxWidgets。
http://www.wxwidgets.org/downloads/是wxWidgets的下载页面。看到Current Stable Release一节,里面有三个小节,第一个小节Source Archives中的wxAll就是我们要下载的,里面包含了所有平台的源代码,还可以选择不同的压缩格式,Windows下常见的zip格式,Linux下常见的tar.gz。下载下来后,解压到某个地方,比如我在Windows下就是C:/,解压出来会有一个wxWidgets-版本号的文件夹。
★ 下载wxWidgets的Daily Snapshot
要获得最新的wxWidgets,一个简单点的办法是下载wxWidgets的Daily Snapshot,它是对每天的SVN版本的wxWidgets的一个打包。在http://www.wxwidgets.org/downloads/最下面有一个Daily Snapshot的链接,它会链接到一个文件列表,里面的文件的最后修改日期都是今天。可以下载里面的wxWidgets.zip或wxWidgets.tar.gz,相当于最新的wxAll。而wxWidgets-snapshot.tar.gz这个大家伙,则还包含wxWidgets网站内容、开发者用到的一些脚本,甚至SVN的版本信息——这样一来,你可以在下面这种方法中,省去检出(check out)的一步,直接svn update就可以了。