VC 6.0下搭建 wxWidgets开发环境

 

 

 

 

 

           

           VC 6.0 下搭建  wxWidgets  开发环境


     和 GTK QT SWT SWING  一样, wxWidgets  也是一种开源跨平台的  GUI  框架。因  wxWidgets  和  MFC  有些渊源,有些亲近,故要体验一番  wxWidgets 。现在最新版是  2.8.7 wxWidgets  程序还可运行于  Windows CE Palm OS 。不但包括  GUI ,还有  Media Socket ODBC  等库。

详情请见 wxWidgets  的官方网站是: http://www.wxwidgets.org

本篇介绍 VC++6.0  下如何搭建  wxWidgets  的开发环境,包括编译  wxWidgets  源码和配置  VC  环境。所用  wxWidgets  的版本是  2.8.7

第一步:下载并安装 wxWidgets

在 http://www.wxwidgets.org/downloads/  下载到  wxWidgets  源码。
你可以下载 Windows  安装版  http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7-Setup.exe (11.9M)
或者是 Zip  压缩版  http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7.zip (15.9M)

假如我们下载的是 wxMSW-2.8.7-Setup.exe ,就可运行它,过程中我们假定选择的安装目录是  d:/wxWidgets-2.8.7 。 完成后,我们看到安装目录所在空间的大不是  127M

注意要给 wxWidgets  有足够的剩余空间,单是编译一个版本的静态库就会增至 300 M ,如果还要编译动态库再选择上  DEBUG  或者  RELEASE ASCII  或是  UNICODE  等,还要编译  sample  的话,最后空间能够暴到  2G

第二步:编译 wxWidgets

编译方式有两种,一种是在 VC++  中打开  wx.dsw  进行编译,另一种是用  nmake  在命令行下编译。

1) nmake 编译

运行 cmd.exe  来到命令行下,进入到目录  d:/wxWidgets-2.8.7 ,然后执行

D:/wxWidgets-2.8.7>nmake -f makefile.vc

默认是编译成 DEBUG  版的静态库。也许我们在编译之前需要根据自己的需要进行一些设置:

打开 D:/wxWidgets-2.8.7/include/wx/msw/setup.h

保证第 110  行的  #define wxUSE_DEBUG_NEW_ALWAYS  设置为  0 。默认是  的。
将 1137  行的  #define wxUSE_IOSTREAMH  设置为  0 ,否则无法使用  VC  的模板库 ( 不能用  std  命名空间下的 ) 。默认是  1
如果要使用 wxWidgets  提供支持数据库的  ODBC  类,将  #define wxUSE_ODBC  设为  1 。默认是  1

如果你想生成动态库,或生成的是 Release  版的,你可以修改  D:/wxWidgets-2.8.7/build/msw/config.vc  文件。打开该文件你能看到可以更改的选项,其中重要的几个如下:

# What type of library to build? [0,1] -- 生成库的类型, 0 为静态库, 1 为动态库
SHARED = 0

# Compile Unicode build of wxWidgets? [0,1] -- 是否使和  UNICODE 否,
UNICODE = 0

# Type of compiled binaries [debug,release] -- 是  debug  还是  release
BUILD = debug

其中还有许多顾名思义的选项,请根据需求修改。

对于 config.vc  中的选项也可以通过命令行覆盖掉配置文件中的值,如编译命令用

D:/wxWidgets-2.8.7>nmake -f makefile.vc SHARED=1 UNICODE=1 BUILD=release

就是编译 release  版,支持  UNICODE  的动态库了。

动态库和静态库的不同体现在使用上,静态库中的代码能编译进应用程序的 exe  文件中,这个  exe  文件可单独发布,但体积较庞大。动态库可让  exe  文件执行时加载,虽然  exe  文件体积小了,但发布时必须带着相应的动态库文件。

2) VC 编译
还 可用 VC++  打开  D:/wxWidgets-2.8.7/build/msw/wx.dsw ,然后选择  Build->Batch Build...  ,我们看到每个工程都有  16  个配置,请根据应用需求勾选你的配置,如所有工程的  Win32 Release  和  Win32 Debug  版本,然后  Build ,如果你照单全收,编译将非常耗时而占空间。这种编译方式就是可以一下操作帮你编译出所有需要的版本。

好, 等等编译完之后,在目录 D:/wxWidgets-2.8.7/lib/  会有产生一个目录: vc_lib  是静态库的目录,默认编译有  17  个静态。如果是编译成动态库则会产生目录  vc_dll 。在  vc_lib  中有  mswd  目录, release  版对应的是  msw ,里面含有  Debug  和  Release  版的  setup.h

注意到 Debug  版和  Release  以及和  UNICODE  、动态库、静态库组合条件编译生成的文件和目录名。
静态库编译到 D:/wxWidgets-2.8.7/lib/vc_lib  目录中
动态库编译到 D:/wxWidgets-2.8.7/lib/vc_dll  目录中
文件命名为 wxmsw28d_core.lib  文件为例:
wxmsw28_core.lib ---- Release,非  UNICODE 
wxmsw28d_core.lib ---- Debug,非  UNICODE 
wxmsw28u_core.lib ---- Release UNICODE 
wxmsw28ud_core.lib ---- Debug UNICODE 
对于 dll  文件的命名规范也一样的。
在 vc_lib  和  vc_dll  下如果全编译了会有四个目录, msw mswd mswu mswud  意义同上。

编译完后可以把那些过程中的目标文件删了,它们占的空间实在是太大。要是你还想以后重新编译用就留着吧。

第三步:创建 wxWidgets  项目

创建一个 Win32 Application  的空项目,项目名为  wxHello
Proejct->Settings (Alt+F7) 进入项目设置
1. C/C++选项卡 ->Code Generation -> use run-time library  设置为 : Debug MutilThread DLL
2. C/C++选项卡 -> PreProcessor -> PreProcessor Definitions  设置加上  __WXMSW__,__WXDEBUG__ , 如果是  Release  , 则只需加上  __WXMSW__
3. C/C++选项卡 -> PreProcessor -> Additional include directories  设置为  D:/wxWidgets-2.8.7/include,D:/wxWidgets-2.8.7/include/lib/vc_lib/mswd,  这是设置附加  Include  路径。
4. Link 选项卡 -> Input -> Object/library modules  设置加上  wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib  这些  Lib( 没有这四个  lib comctl32.lib rpcrt4.lib winmm.lib wsock32.lib  的话请加上,关键是前两个 ) 。如果要使用  wxODBC  就加上 wxbase28d_odbc.lib
5. Link 选项卡 -> Input -> Addtional library path  设置为 : D:/wxWidgets-2.8.7/lib/vc_lib

注意:编译成不同版的执行代码应填入相应的 Additional include directories  和  Addtional library path
编译成依赖 DLL  的执行文件还需要加上预处理指令  WXUSINGDLL
UNICODE  编译则需要加上预处理指令  _UNICODE
还有一种 Universal  编译,要加上预处理指令  __WXUNIVERSAL__

这样一个普通的WxWdigets 项目就设置好了 .

 我们测试 WxWidgets  自带的例子  minimal 。新建一个  minimal.cpp  文件,内容同  D:/wxWidgets-2.8.7/samples/minimal/minimal.cpp ,编译,不出意外,成功了 !

 也可设置全局的目录

前 面我们是为项目配置 Additional Include Directories  和  Additional library path 。我们可以把这设置成全局的。就可以不用在项目中单独设置。全局设置有其缺陷,无法分开是  vc_lib  还是  vc_dll  中的  lib ,是  mswd  还是  msw  中的  wx/setup.h  文件。在这里设置  Source Files  还是必要的。并且在下面前两个  Include Files  放在全局设置里也较合适。

进到 VC++  的  Tools->Options->Directories ,选择  "Include Files"  后,添加
D:/wxWidgets-2.8.7/include
D:/wxWidgets-2.8.7/contrib/include
D:/wxWidgets-2.8.7/lib/vc_lib/mswd

对应于 Project Settings -> C/C++ Tab->Preprocessor  中的  Additional include directories

再选择 "Libraries Files" ,添加
D:/wxWidgets-2.8.7/vc_lib

对应于 Project Settings -> Link Tab -> Input  中的  Additional library path

再选择 "Source Files" ,添加
D:/wxWidgets-2.8.7/src

最后大致比较一下生成程序的大小

Release 静态库版 (vc_msw) minimal.exe 1.11M ,可单独发布
Debug 静态库版 (vc_mswd) minimal.exe 2.52M ,可单独发布
Release 动态库版 (vc_mswdll) minimal.exe 68K ,加上 wxmsw28_core_vc_custom.dll (2.85M)  和  wxbase28_vc_custom.dll (1.11M) ,共  4M
Debug 动态库版 (vc_mswddll) minimal.exe 96K ,加上 wxmsw28d_core_vc_custom.dll (4.26M)  和  wxbase28d_vc_custom.dll (1.82M) ,共  6.1M

这是一个简单的 wxWidgets  程序,只用到了两个动态库的情况。在用到  wxWidgets  库较少时用静态库来编译发布文件会小一些,若是用到组件多的时候,可能用动态库方便些,请酌情决定。 


本文转载自CSDN http://sd.csdn.net/page/8af6ed1e-b6b4-4ef9-8bc2-6f5485c79c34

你可能感兴趣的:(VC 6.0下搭建 wxWidgets开发环境)