第二章 wxWidgets的安装与编译
要顺利使用wxWidgets进行开发,首页必须做好wxWidgets的安装和编译工作。由于本人只在Windows平台进行开发,所以本章只对基于Windows平台的安装和编译方法进行展开描述。
2.1下载wxWidgets源码
首先,我们需要在wxWidgets官网下载源码,作为开源项目,它的源码并没有直接存在官网,在官网Downloads栏目下它每个版本提供了两个下载连接,一个来自SourceForge,一个来自英国一个FTP镜像。在本教程中,我们使用的是最新版本2.9.4版本,所以我们在直接找到2.9.4版的安装包(名为wxMSW-2.9.4-Setup.exe)并将其保存到本地。接下来只需要运行安装包,除了确认一下安装目录外,一直点下一步即可完成安装。待安装完成后,我们可以发现wxWidgets源码已经全部在其安装目录“wxWidgets-2.9.4”下了。在本教程中,我们安装在了D盘,所以其安装目录即为“D:\wxWidgets-2.9.4”,这个目录在本教程中我们全程称之为wxWidgets库根目录。
2.2 编译器的选择
这里我们准备介绍用两款的编译器对它进行编译。一款是大众熟悉的Visual Studio,一款是MinGW,下面我们分别对它们展开介绍。
2.2.1 用VS(Visual Studio简称)进行编译
wxWidgets官方由于都是基于非Windows系统进行开发,所以在之前的版本,对VS编译的支持不是很强,相关的文章也不是很全面,一般都只能通过VC6.0进行编译。但自从2.8开始,开始增大了对VS的支持,现在我们甚至可以最高可用VS2010版本对wxWidgets2.9版本进行编译了。
VS版本 | 外号 | 备注 |
Visual C++ 6.0 | VC6 | VC6于1998发布. 在用这个版本编译时,需要安装好service pack 6补丁包。 |
Visual C++ .NET 2002 | Visual C++ 7.0 | VC7是第一个包括托管C++、VB和VC#的共享版本。这个版本在发布时存在重要的BUG, 所以我们强烈推荐要么使用VC6(wxWidgets并不需要使用托管扩展),要么升级到VC7.1再进行编译。 |
Visual C++ .NET 2003 | Visual C++ 7.1 | VC7.1是作为一个重大修复版本发布的,其编译器和连接器当时作为免费的VC2003工具包发布出来,但为了支持后面的VS2005(8.0)的发展,工具包现在已经撤下了。 |
Visual C++ 2005 | Visual C++ 8.0 | 这个版本在智能感知和STL调试功能上进行了一些改进和扩充。 |
Visual C++ 2008 | Visual C++ 9.0 | (推荐)(2.8及2.9以上的wxWidgets版本在该VS版本运行得相对更稳定一些). 和VS2005相反,这个版本的Express版包含了Windows平台SDK,这使它在安装使用wxWidgets建立的程序比VS2005变得更为简单。这个Express版本虽然有一些功能限制,但现在仍然可以免费使用, 包括商业上的使用。当然,你可以使用专业版的话那就更棒了。 |
Visual C++ 2010 | Visual C++ 10.0 |
(警告: wxWidgets 2.8 不支持在此版本编译)这个版本Expres版也是免费的,也可以在商业上使用,但同样有一些限制。 你可以在微软官方了解更多的VS2010新特性。 |
Visual C++ 2012 | Visual C++ 11.0 | (警告: wxWidgets 2.8 不支持在此版本编译)最新版本的VS,Express版也是可供免费使用的。但现在wxWidgets对它还不支持,在未来会增加对其支持,目前请斟酌使用。 |
闲话少说,我们开始进入主题,首页我们找到它的编译工程,编译工程都存放在了根目录下的build目录下,而支持VS的工程在build目录的msw目录下,即“D:\wxWidgets-2.9.4\build\msw\”,打开这个目录我们可以看到从VC6的“wx.dsw”工程到VS2008的“wx_vc9.sln”工程,都已经包含在里面了,有些人看到这里可能要问了,不是说最高用VS2010的吗?别急,我们通过VS2010打开“wx_vc9.sln”,一路升级转换成VS2010项目就好了!
项目转成VS2010版后,用VS2010打开,我们可以看到库里有23个子项目,为了以后的方便使用,我们需要对其有一定的理解,所以在编译之前,我简单地对其进行分类介绍:
基库:wxBase
每个wxWidgets程序都必须依赖的库,它是wxWidgets的最基本单元,如wxString的定义。它不依赖任何GUI库,可以用它来开发控制台程序。
GUI核心库:wxCore
基础GUI库,包括GDI绘图和控件,所有的wxWidgetsGUI程序必须依赖这个库。
网络通信库:wxNet
简单文档处理库:wxXML、wxHTML、wxXRC
其中wxXRC是针对资源操作的XML文档操作库
高级控件库:wxAdvanced
其下属控件包括日历控件wxCalendarCtrl、网格控件wxGrid、操纵杆控件wxJoystick、程序启动控件wxSplashScreen、任务栏图标控件wxTaskIcon、声音控件wxSound、向导控件wxWizard、可伸缩窗口及窗口布局控件wxSashWindow和wxSashLayoutWindow等等。
属性网格控件库:wxPropertyGrid
一个类似开发工具中常见的控件属性窗体控件
浏览器控件库:wxWebView
富文本控件库:wxRichText
代码着色库:wxScintilla、wxSTC
多文档界面库:wxAui
Office-Ribbon皮肤库:wxRibbon
图像库:wxJpeg、wxPng、wxTiff、wxGL
这里的wxGL是wxWidgets对OpenGL的整合实现,与其他库不同,这个库必须作为单一的代码包进行单独编译。
压缩库:wxzlib
媒体库:wxMedia
功能解析库:wxRegex、wxExpat
其中wxRegex顾名思义就是正则解析库,而wxExpat是对xml的解析库
质量保证库:wxQA
这个库要解释一下,它是用来追踪程序质量的,对于一个类库来说这是一个很好的扩展思路,能方便让使用者进行程序的追踪控制。该库目前只包含一个调试报告类和其相关类,未来会增加更多。
通过对库的分类,我们可以发现,其中有很多库也是来源于其他开源库,不过wxWidgets里对它们进行了重新封装和加工以适应更多平台,这里也正好充分体现了开源软件发展壮大的优越之处。在这里,为了方便大家对其有更深层次的了解,我根据自己的了解,将wxWidgets所含的开源库及其官方网址也列举一下:
Libtiff http://www.libtiff.org/
Libpng http://www.libpng.org/
Libjpeg http://www.ijg.org/
Libexpat http://www.libexpat.org/
Scintilla http://www.scintilla.org/
Zlib http://zlib.net/
wxWidgets所有库的大致层次如下图所示:
在对库的含义进行了解后,我们开始进行编译工作。wxWidgets库因为子库众多,编译存在一个先后问题,所以在用VS进行编译时,你不能直接用刚打开工程就点编译,你需要按照下图的顺序一个库一个库地进行编译:
如果你是严格按照上面的步骤进行编译,不出意外的话,半个到一个小时的时间你就可以完成编译工作了。完成编译后,你可以在wxWidgets根目录下找到lib目录,其中vc_lib下就是你编译后的杰作啦,至此不知道读者你是不是会有些小小的成就感了呢?
虽然这样可以顺利的编译,你很开心,但我不得不告诉你,其实还有更方便更快捷的编译方法。那主是利用官方给我们做好了现成的makefile.vc编译文件,我们只要通过VC的命令提示环境,用nmake进行编译就好了,这种编译只要一敲命令,就可以坐等结果出来了,这样出错的机率也会少很多,虽然这样的成就敢会少一点,不过如果你暂时不想趁编译的时候,对库进行一个比较全面的了解,那么我推荐你使用这种简单有效的编译方法。
虽然这个方法比较简单,但对命令提示符环境不熟悉的读者来说,还是有一定难度的,所以下面我也对这个编译方法进行一个比较简单的介绍。
首先我们打开VS命令提示环境,具体步骤如下:
开始菜单->程序-> Microsoft Visual Studio 2010->Visual Studio Tools
->Microsoft Visual Studio命令提示环境2010
通过命令进入wxWidgets的build目录:
>d:\
>cd wxWidgets-2.9.4\\build\msw
>nmake /f makefile.vc SHARED=0 UNICODE=1 BUILD=debug
等待到窗口不跳结果,返回到像下面的命令提示符状态即可:
D:\wxWidgets-2.9.4\\build\msw>
2.2.2 用MinGW进行编译
虽然很多人都喜欢用功能强大而华丽的VS进行程序开发,但在开发wxWidgets程序时,我推荐用CodeBlocks加MinGW进行开发。主要原因是VS上并没有对wxWidgets的主动支持,在开发wxWidgets程序时,我们必须借助另外的界面设计工具(如wxFormBuiler),并且在VS上每建立一个wxWidgets工程,都需要进行若干繁琐的配置。
如果你用CodeBlocks进行wxWidgets开发的话,一般都是用GCC编译器进行程序的编译,所以你就必须使用MinGW进行编译,因此掌握好这一小节的是很有必要的。
用MinGW编译wxWidgets其实很简单,和在VS的命令提示符进行编译差不多。首先,我们需要安装好MinGW,可以在其官方http://www.mingw.org/直接下载最新版本,在官网找到Downloads连接直接点进去,MinGW也是开源的,所以我们发现它也是保存在SourceForge上的,安装包保存在其Installer目录下,这里我下的是mingw-get-inst-20120426.exe。
下好双击运行安装包,一直下一步下一步就好。
安装完成后,我们需要配置一下环境变量,如图所示,我们需要在用户环境变量PATH后加入MinGW的运行目录,因为我把MinGW装在C:\MinGW下,所以这里我填上C:\MinGW\bin。
环境变量配置图(待截图)
MinGW安装配置完成后,我们在开始->运行cmd,打开Windows的命令提示符窗口,然后像上一节中用VS命令提示环境编译一样,进入wxWidgets根目录:
>d:\
>cd wxWidgets-2.9.4\\build\msw
>mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=debug
也是经过半个到一个小时时间,编译就能顺利完成了。编译产生的库文件存放在wxWidgets根目录下的lib\gcc_lib目录底下。
至此,本章对wxWidgets的编译和安装就介绍完了,以前没有教程看的话,wxWidgets的编译过程可能是一件相当头疼的事情,过程中可能会遇到各种各样的问题(因为我以前也是如此),因此希望本章能帮助你顺利上手使用wxWidgets。如果在安装编译过程中还是碰到一些问题,你可以在本章后给我留言,我很乐意与你一道解决。
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/942
from: 《跟我学wxWidgets开发》系列教程开始了 - Lupin's Blog-原中华最网
>d:>cd wxWidgets-2.9.4\buildmsw>mingw32-nmake /f makefile.gcc SHARED=0 UNICODE=1 BUILD=debug有两点错误:1.”mingw32-nmake” 应该是”mingw32-make”2.“/f”应该是-f正确的是:>mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=debug
哦了,在编辑的时候复制到VC编译器的命令了,多谢DDragon的提醒哈!
博主您好,有一点小问题想问您:我编译出来的库文件都是 .a 结尾的,但是在Windows下不是应该是 .lib 结尾的么。。?
你这个用MinGW编译出来的就是.a文件的,这是对的哈!
我是Windows下用MinGW编译的
学习了 刚刚发现这个库 正在努力配置环境 主要是 环境配置好后 如何使用那些图形化设计器设置出来的东西到vs中?wxdevc++实在用不来
用VC做IDE的话,教程接下来的小节里会有介绍,可以用VS+wxFormBuilder的组合来进行开发。
恩 到时候再来观摩
不是,你误解啦,这一小节已经有的呀,地址是http://www.cnzui.com/archives/957基于VS上的wxWidgets开发环境配置
学习了 刚刚发现这个库 正在努力配置环境 主要是 环境配置好后 如何使用那些图形化设计器设置出来的东西到vs中?wxdevc 实在用不来
用VC做IDE的话,教程接下来的小节里会有介绍,可以用VS wxFormBuilder的组合来进行开发。
博主您是否有使用 CodeLite 搭配 MinGW 与 wxWidgets 来当作开发环境呢?若可以是否可以帮忙整理如何安装相关环境设定,先谢谢您~
fento你好,其实IDE的配置总结一下就是三点:1.wxWidgets的include路径配置;2.wxWidgets的库文件引用地址;3.编译器环境配置。市面上流行很多的IDE,我知道各自有各自的喜好,不过我仍然推荐教程中提到的CodeBlocks或者VS。当然,你可以按照上面提示针对自己喜欢的IDE写一个经验心得,我相信对后来者也是很有意义的。
codeblocks 如何配置
你可以往后几节看哦,有告诉大家怎么配置codeblocks的。
为什么我的不可以?makefile.gcc 13399: recipe for target ‘gcc_mswudcorelib_treectrl.o’ failed
没遇到过这样的问题,可以提供详细点的错误信息吗?编译器用的什么,用的是哪个版本的wxWidgets?
弱爆了,我又换了,现在是||=== wxTest, Debug ===|includewxplatform.h|189|fatal error: wx/setup.h: No such file or directory|直接下载的wxMSW-3.0.0_gcc481TDM_x64_Dev.7z
3.0这个是最新版本的wxWidgets吧,这个版本我还没用过呢!不过你这个错误很常见,一般你在wxWidgets目录下找到setup.h文件,然后拷贝到include目录的wx目录下就好。具体的你可以到官方论坛搜索这类问题的。