范圣帅 - 卡农的魔笛

卡迪的快乐生活

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

http://www.wxwidgets.org/

下载wxWidgets 的zip包。解压到某一目录(后文中此目录用 %WXPATH%代替)。

编译 wxWidgets

(可以用IDE打开%WXPATH%\build\msw\wx.dsw或wx_dll.dsw编译,注意相关参数的设置

在 Visual Studio 命令行环境下进入%WXPATH%\build\msw 目录。这里面有一系列makefile,根据其对应的编译器不同有着不同的后缀,并且每种编译器也对应着一个config 文件。

makefile.vc 和 config.vc。

用文本编辑器打开 config.vc 文件。这是关于如何编译
wxWidgets 的设置。这里解释一些重要的选项。

SHARE: 编译产生的 wxWidgets 库是静态库还是动态库
UNICODE: 是否支持 unicode utf-8
BUILD: 编译产生的库是用于调试的还是最终发行的

UNICODE、BUILD
选项可产生四种组合,产生四套不同的库,若再和SHARE 组合则可产生八套不同的库。

MONOLITHIC: 是否只产生一个单一的库文件。

USE_GUI: 是否编译图形界面库
USE_HTML: 是否编译 HTML 库
USE_XRC: 是否编译 XRC 库
USE_OPENGL: 是否编译 OPENGL 库
USE_ODBC: 是否编译 ODBC 库
USE_QA: 是否编译 QA 库

RUNTIME_LIBS: 使用动态还是静态的 C++ 运行库,对应VC编译器的 /MD 和 /MT 参数


除了 UNICODE 和 BUILD 选项之外,其它选项如下:

SHARE = 0
MONOLITHIC = 0
USE_GUI = 1
USE_HTML = 1
USE_XRC = 1
USE_OPENGL = 1
USE_ODBC = 1
USE_QA = 1
RUNTIME_LIBS = static


nmake -f makefile.vc BUILD=xxxx UNICODE=yy

编译产生的临时文件分别在 msw mswd mswu mswud
四个子目录中,这些是为了在调整设置后重新编译时节约时间的,若不想重新编译可以把它们删掉。而最终产生的lib 文件已经被拷贝到了 %WXPATH%\lib\vc_lib下。其中每套库还有一个配置文件,分别在%WXPATH%\lib\vc_lib 下的 msw mswd mswu mswud
四个目录中,这些配置文件里包含许多可以调整的预编译选项,具体可以参考相关文档。

到此为止,wxWidgets库已经编译好了。

设置一个使用 wxWidgets 的Visual Studio 工程

启动 Visual C++ 2005,打开Tools\Option 菜单。这里是 IDE 的一些全局选项。看看
Projects and Solutions\VC++ Directories 里面是否包括 Platform SDK的include 和lib目录,如果没有的话加上。

然后新建一个工程(Win32 Application,在工程设置里面修改编译器和连接器的设置如下(注意把%WXPATH% 换成真实的 wxWidgets 解压目录):

[Debug]

Configuration Properties\C/C++\General\Additional Include Directories:
%WXPATH%\include;%WXPATH%\include\msvc

Configuration Properties\C/C++\Preprocessor\Preprocessor Definitions:
WIN32;__WXMSW__;_WINDOWS;_DEBUG;__WXDEBUG__

Configuration Properties\C/C++\Code Generation\Runtime Library:
Multi-threaded Debug(/MTd)

Configuration Properties\Linker\General\Additional Library Directories:
%WXPATH%\lib\vc_lib

Configuration Properties\Linker\Input\Additional Dependencies:
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib
shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib
advapi32.lib wsock32.lib odbc32.lib opengl32.lib
(wxWidgets 的库好像会在预编译里自动被加上,否则可以将wxXX库添加进去)

Configuration Properties\Linker\Debugging\Generate Debug Info:
Yes(/DEBUG)

[Release]

Configuration Properties\C/C++\General\Additional Include Directories:
%WXPATH%\include;%WXPATH%\include\msvc

Configuration Properties\C/C++\Preprocessor\Preprocessor Definitions:
WIN32;__WXMSW__;_WINDOWS

Configuration Properties\C/C++\Code Generation\Runtime Library:
Multi-threaded Debug(/MT)

Configuration Properties\Linker\General\Additional Library Directories:
%WXPATH%\lib\vc_lib

Configuration Properties\Linker\Input\Additional Dependencies:
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib
shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib
advapi32.lib wsock32.lib odbc32.lib opengl32.lib

此外还需特别注意字符集是否是Unicode.总之,工程需要和添加的库的版本相符

posted on 2009-04-30 13:35  范圣帅  阅读(861)  评论(0编辑  收藏  举报