You are on page 1of 18

WxWidgets 与 Code::Blocks 组建跨

平台开发环境

开始学习编程,研究的都是 WIN 下的程序设计,后来用上了 LINUX ,喜欢上了了开

源、共享的理念,也喜欢 LINUX 下简洁、高效的软件,舍弃了商业浮躁的程序用起来总是有

种亲切的感觉。开源软件已经用过很多,感谢开源阵营的朋友们为我们带来这么多优秀的程

序,也总想自己写一个开源的程序,还想学着现在许多优秀的开源软件那样做成跨平台的 ,

单纯标准 C++的代码,只需要在不同平台重新编译就可以了,至于 GUI(图形用户界面,

就是我们俗称的窗口)以及文件操作等由于不同平台的特性,要实现的跨平台,等于是重

写代码。而使用 JAVA 这样依靠进程虚拟机运行的程序,又顾虑到程序执行的效率问题,难

道 就没 有两 全其 美的 解决 办法 了吗 ?偶 然间 发现 了开 源的 阵营 中的 又一 个好 东东 ,

WxWidgets,这是一个开源的跨平台的 GUI 库,而且是以本地代码实现,并非像 JAVA 那

样依靠虚拟机。程序员用一份相同的代码在不同的平台下编译一遍,就可以得到对应平台的

程序了。下面我们就一步一步地来学习这个伟大的 GUI 库的构建方法,由于 WIN 使用比较

广泛,下面的配置均在 WIN 下进行,LINUX 平台的配置类似。

三剑 客组合

编译器+IDE+GUI 库,才是一个完整的开发环境,看看我们下面的这套组合,真堪称

完美了,全开源,全跨平台.

编译器:MinGw,GNU 移植到 WIN 下的产物

IDE:CODE::BLOCK ,简洁高效的 C++ IDE


GUI 库:WxWidgets,功能强大的 GUI 库

安装 CODE::BLOCKS

访问 CB 官网,下载 WIN 版本的 CB


版本选择

CODELBOCK 的安装过程十分简单,这里就不啰嗦了

下载 WxWidgets

访问 http://www.wxwidgets.org/ ,转到下载页面,这里提供了多种版本的下载,

分别对应于不同的平台,第一个 WXALL ,当然是全平台的了,大小上与其它平台相差不

大,我们就选择这个版本,同时还可以下载 WX 的帮助手册
设置 环境变 量

从官网下载来的只是 WX 的源码,还需要经过编译才可以使用,我们使用的编译器是

CB 带的 MINGW,下面设置 MINGW 的环境变量

STEP1

进入 CODEBLOCK 的安装目录,找到 MINGW 下的 BIN 文件夹,复制路径

STEP2

在我的电脑上单击右键,选择属性,弹出系统属性窗口,转到高级标签,单击窗口底端的
环境变量按钮

STEP3

选择 PATH,单击编辑,输入分号和之前拷贝的路径
SETP4

开始->运行->CMD->输入 GCC,若显示如下图,则表示环境变量设置正确
WxWidgets 编译 选项

WxWidgets 提供了多种的编译选项,用户可以根据自己的需要进行组合,笔者在初

学 WxWidgets 时,由于没有搞清楚编译选项,走了不少弯路,所以这篇教程将编译选项

的介绍放在这里来讲述,而不是像大多数教程一样将这部分的内容做为附录,下面是一条

WX 的构建语句。

mingw32-make -f makef i l e .gcc BUILD=re lease SHARED=0 MONOL ITH IC=1

UNICODE=0

mingw32-make 便 是 之 前 介 绍 过 的 mingw 平 台 的 一 个 组 件 ,

BUILD、SHARED、MONOL ITH IC ,UN ICODE 是 wxwidgets 的四个编译选项。

BUILD

BUILD 控制 wxWidgets 构建调试版本(BUILD=debug)或者是发布版本(BUILD=release)。绝大

多数情况下你只需要 wxWidgets 的发布版本就可以了,因为你应该不想要去调试 wxWidgets 自身,同时

你依然可以通过链接 wxWidgets 的发布版本来构建你自己的程序的调试版本。

SHARED

SHARED 控制 wxWidgets 是构建 DLL(SHARED=1)还是静态库(SHARED=0)。利用构建的

DLL,主程序构建时间较快,可执行文件更小。但是可执行文件必须加上 wxWidgets DLL 才可以运行,同

时也增加了程序大小。
MONOLITHIC

MONOLITHIC 控制是构建一个单一的库(MONOLITHIC=1)还是多个组件库

(MONOLITHIC=0)。使用单一构建,项目的设置和开发会更加简单,如果你同时使用 DLL 构建的话,

你只需要分发一个 DLL 文件。如果使用非单一构建(multilib),会构建出多个不同的库同时你可以避免将

整个 wxWidgets 的基本代码链接到主程序,就可以去掉不需要的库。同时你也必须确保你选择了正确的组

件库。

UNICODE

UNICODE 控制 wxWidgets 以及你的程序是否使用支持 Unicode 的宽字符串。大多数 Windows 2000

或更高系统上的应用程序都应该支持 Unicode。早期的 Windows 版本不一定有 Unicode 支持。你应该总是

使用 wxWidgets 的_ ( " s t r i ng"


和)_T("string")宏来确保硬编码的字符串编译时是正确的类型。

构建 WxW idg ets

了解了这些选项,编译起来才不会一头雾水,现在就把 WxWidgets 的源代码变成可

用的开发库

STEP1

转到 WX 的构建目录,在笔者的电脑上是 H:\wx\wxwidgets-2.8.8\build\msw

msw,应该就是 Microsoft Windows 的缩写了


STEP2

执行构建命令,我们推荐的参数组合是:

mingw32-make - f makef i l e .gcc BU ILD=re lease SHARED=0 MONOL ITH IC=1 UNICODE=0

即发行版本、静态库、单一库、非 UNICODE 。为什么是非 UNICODE 呢,这是因为 UNICODE 模式下的,程

序 中 所 有 的 字 符 串 都 必 须 加 载 wxT 宏 , 如 wxT(“s t r i ng”,而


) ” s t r i ng”
的表 示则 会编 译报 错, 非

UNICODE 模式下则没有这个麻烦,同时也可以应用 wxT 宏,给予字符串 un i code支持。

Step3

接下来是漫长的编译过程,大约 30-40 分钟,泡杯咖啡,听些音乐,休息下吧。


与 CODELBOCK 组合

STEP1

打开 CODE::BLOCK,File->new->project,选择 wxWidgets Project,Go!


Step2

选择 WxWidgets 库版本,我们下载的是 2.8.8 版,选择第二项,NEXT->

Step3

输入工程名称,以及工程文件保存位置,next,输入作者信息
Step4

这里采用默认就可以了
Step4

选择 WX 的安装位置
Step5

这步非常关键,Library Setting 依照之前的编译选项进行选择,还记得我们的编译选项吗

SHARED=0, 使用静态库,不使用 DLL ,第一项不打勾

MONOL ITH IC=1 使用单一库,第二项打勾

UNICODE=0 不使用 UNICODE , 第三项不打色

好,继续
完 成 向 导 之 后 , CODEBLOCK 自 动 生 成 了 一 些 代 码 , 由 于 之 前 的 构 建 选 项

BUILD=RELEASE,将 BUILD TARGET 改成 RELEASE

按 F9,编译运行
一个可爱的小窗口出现了,这就是我们的第一个 WxWidgets 程序了。WxWidgets 安

装与配置的教程就讲到这里,后面的教程中我们会继续介绍 Wxwidgets 的各种控制的使

用,请各位看官拭目以待吧。