本文目的
本文是一个简单的step by step 介绍,演示了在windows 下搭建wxWidgets 开发环境来代替Visual C++和MFC 进行开发。
一 工具介绍
Code::Blocks
Code::Blocks 是一个C++ IDE ,支持各种操作系统平台(Windows/Linux/Mac OS X) 。当前最新版本为10.05 (截止2010-07-07) 。Code Blocks 本身即是使用wxWidgets 开发,对wxWidgets 有良好的支持。它支持调试、智能提示、资源编辑等IDE 常见功能,另外还有丰富的插件可供选择。
Code::Blocks运行时截图如下:
它的配置比较丰富,例如有丰富的代码编辑习惯可以配置,如折叠、代码块自动完成、符号搜索、代码格式,当然少不了的wxWidgets 配置。以下是其代码编辑配置项的配置界面:
另外,还可以配置使用各种编译器进行编译调试,目前它的配置列表中支持以下编译器:
gcc
visual C++ 2003/2005/2008
borland c++
digital mars compiler
open watcom compiler
gcc for msp430
cygwin gcc
lcc compiler
intel c/c++ compiler
sdcc compiler
tiny c compiler
gdc d compiler
digital mars d compiler
arm gcc
avr gcc
gcc for powerPC
gcc for Tricore
minGW 介绍
MinGW ,即 Minimalist GNU For Windows 。它是一些头文件和库文件的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC 产生 Windows32 程序。
实际上 MinGW 并不只是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 ( 比如 gawk bison 等等) 。
开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。
所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。
wxWidgets 介绍
wxWidgets 是由 Julian Smart 于 1992 年还在英国爱丁堡大学人工智能应用研究所开始的一个项目。 作为一个C++ GUI Library 从1992 发展到现在,已经在全球范围内产生了极大的影响力,利用这个类库进行GUI 开发的软件更是不计其数。
wxWidgets 是一个C++ 库,它支持Windows, OS X, Linux 和Unix 平台的32 位64 位软件的开发。同时也支持Windows Mobile, iPhone 和嵌入式GTK+ 图形环境。
它同时也可以绑定其它语言,Python(wxPython), Perl(wxPerl), Ruby(wxRuby), Smalltalk(wxSmalltalk), Java(wx4j) 、甚至是JavaScript(wxjs) 等。
wxWidgets 有两个很突出的特点。一,它是使用 native API 的开发库,这就是意味着,在 Windows 平台上创建的图形界面,如窗口、对话框等,具有 Windows 平台同样风格的可视界面,在 gnome 平台上,同样有gnome风格,因为它是调用该平台图形库本身的接口创建的(native方式)。二, wxWidgets 是参考 MFC 发展而来,编码风格与 MFC 非常类似,甚至变量名称都类似,对于 MFC 开发人员,移植到 wxWidgets 非常方便。
以下是几张基于wxWidgets 开发的软件截图:
二 安装
Code::Blocks 主页:www.codeblocks.org
选择集成 minGW 的 windows 安装版本。 10.05 版的 Code::Blocks 集成 minGW 安装版文件名为: codeblocks-10.05mingw-setup.exe ,文件大小: 74MB 。下载地址: http://prdownload.berlios.de/codeblocks/codeblocks-10.05mingw-setup.exe
wxWidgets 主页:www.wxwidgets.org
windows 安装版下载地址:http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.11-Setup.exe
安装过程建议选择默认设置。安装过程中注意两点:默认情况下Code::Blocks 安装文件会选择同时安装minGW ,不要改变这个选择;wxWidgets 的安装目录不要带上空格,典型的如不要装在"Program Files" 目录下。
三 使用 minGW 编译 wxWidgets
安装后的wxWidgets 只有源代码,需要编译成库文件才能使用。
编译wxWidgets 步骤如下:
1 在系统 PATH 变量中添加 minGW 的 bin 路径,并重启。这样就可以在 cmd 窗口使用 mingw32-make.exe 工具。
2 打开命令窗口 cmd ,进入 wxWidgets 安装目录下的 build/msw 子目录,执行命令:
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release
3 编译wxWidgets 会使用几十分钟的时间,视主机运行速度。编译后的中间文件和库文件会占用最高数G 的空间,所以硬盘上需要保留2-4G 空间。具体占用的空间大小会视编译的版本数量不同而不同。
wxWidgets 编译时的命令中有一些设置可以选择,如下:
SHARED=0 编译静态库
SHARED=1 编译动态库
MONOLITHIC=1 编译结果为一个库文件 ,否则编译结果会分为几个库文件,开发时根据工程需要选择使用的库文件。
UNICODE=1 编译 UNICODE 版本
BUILD=debug 编译 debug 版本
BUILD=release 编译 release 版本
四 建立 hello world 工程
1 创建新wxWidget 工程,菜单"file->new->project" 。
选择创建"wxWidgets project"。
使用的wxWidgets版本为2.8。
在 "Project title:" 栏中填写工程名称"wxTest"。
本页保持默认。
选择使用 wxSmith 插件,建立 dialog 工程。
在本页选择wxWidgets 的安装路径。
在 "Compiler" 列表中选择 gcc 编译器 ( 默认即为 gcc) ,其它保持默认。如果之前编译wxWidgets没有成功,此时会提示找不到相应的wxWidgets库。当然选择不同的编译器的时候,这一步搜索的wxWidgetes目录也不同。所以如果需要使用其它的编译器,如Visual C++,那么之前就需要先用Visual C++编译好wxWidgets。wxWidgets不能混用,例如用Visual C++编译出来的wxWdigets库放在此处由gcc来链接。
选择使用 wxWidgets DLL ,不选择 "wxWidgets is built as a monolithic library"( 如果之前编译的wxWidgets库是一个单独的库文件,这儿也可以选择该条)。
2 检查编译器。
点击菜单 "Settings->Compiler and debugger" ,在弹出的设置窗口中,左侧分类栏中选择 "Global compiler settings" ,右侧的 tab 页中选择 "Toolchain executables" ,并且检查 "Compiler's installation directory" 是否正确。也可以使用旁边的 "Auto-detect" 按钮。
3 编译运行
点击菜单 "Build->Build" ,编译如果没有错误, "Build log" 窗口会有如下输出:
点击菜单 "Debug->Start" 运行程序。
hello world 程序运行如下:
四编译链接设置
如果编译出错,点击菜单 "Project->Build options" ,在 "Linker setting" 中设置链接的库文件,或者在 "Search directories" 中设置头文件和库文件的搜索路径。