1,安装Code:Blocks和MinGW编译器,下载wxWidgets包
在http://www.codeblocks.org/ 下载带有mingw的codeblocks安装包.(eg:codeblocks-10.05mingw-setup.exe)
在http://www.wxwidgets.org/下载wxWidgets压缩包(eg:wxWidgets-2.9.1.7z)
分别安装,(注意,二者所在目录不能为中文,wxWidgets所在目录必须不能包含空格)
(eg:codeblocks在 C:\Program Files\CodeBlocks
wxWidgets在 C:\wxWidgets-2.9.1)
2,定义编译器环境变量,测试编译器版本
可将编译器路径添加到电脑环境变量中,也可以写个批处理,临时指定路径.(批处理会在后边给出)
按上边路径安装后,对应编译器路径为C:\Program Files\CodeBlocks\MinGW\bin和C:\Program Files\CodeBlocks\MinGW\mingw32\bin
(如果是64位的操作系统,则CodeBlocks可能被安装在C:\Program Files (x86)\CodeBlocks下面,这样的话这两个路径就需要做相应的修改)
路径设置过后,输入 mingw32-make -v 来测试编译器版本,确保版本为3.80或以上.
3.编译wxWidgets
首先打开命令窗口(运行->cmd),定位到wxWidgets目录下的\build\msw文件夹,然后进行下面的操作。
1)首先清除之前编译过的文件,执行mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
(如果,你是第一次下载并编译wxWidgets,则不需要执行次步骤。)
2)清除之前的编译文件后,开始编译,执行 mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
(注意,清除时的配置要可之后重新编译的配置一致.编译过程可能会很长,请耐心等待.)
编译配置:
BUILD 控制编译wxWidgets是debug版本或release版本,debug版本时,库名带后缀d.
SHARED 控制编译wxWidgets成DLL或是static, DLL时,多个wxWidgets工程可共用相同的DLL,工程发布时,必须包含该DLL文件
MONOLITHIC 控制编译成1个独立的DLL库,还是多个DLL库
UNICODE 控制编译出的wxWidgets是否支持unicode,若使用汉字,必须支持unicode
wxWidgets编译选项简介 BUILD BUILD控制wxWidgets构建调试版本(BUILD=debug)或者是发布版本(BUILD=release)。绝大多数情况下你只需要wxWidgets的发布版本就可以了,因为你应该不想要去调试wxWidgets自身,同时你依然可以通过链接wxWidgets的发布版本来构建你自己的程序的调试版本。 调试构建wxWidgets会创建带有”d”后缀的库,例如”libwxmsw28d.a”、”wxmsw28d_gcc_custom.dll”。 调试构建wxWidgets会在wxWidgets库的输出目录中创建”mswd” 或者 “mswud” 目录。 发布构建wxWidgets创建的库没有”d”后缀,例如”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。 发布构建wxWidgets会在wxWidgets库的输出目录中创建”msw” 或者 “mswu” 目录。 SHARED SHARED控制wxWidgets是构建DLL(SHARED=1)还是静态库(SHARED=0)。利用构建的DLL,主程序构建时间较快,可执行文件更小。但是可执行文件加上wxWidgets DLL的总大小更大,但是不同的可执行文件可以使用同一个DLL。 wxWidgets的DLL构建会创建导入库(如 libwxmsw28.a)以及DLL文件(如wxmsw28_gcc_custom.dll)。你必须在发布你的程序的时候包含这个DLL。 wxWidgets的静态构建只会创建静态库(如 libwxmsw28.a),发布的时候也无须包含wxWidgets的DLL。 MONOLITHIC MONOLITHIC控制是构建一个单一的库(MONOLITHIC=1)还是多个组件库(MONOLITHIC=0)。使用单一构建,项目的设置和开发会更加简单,如果你同时使用DLL构建的话,你只需要分发一个DLL文件。如果使用非单一构建(multilib),会构建出多个不同的库同时你可以避免将整个wxWidgets的基本代码链接到主程序,就可以去掉不需要的库。同时你也必须确保你选择了正确的组件库。 wxWidgets的单一构建仅会创建一个wxWidgets导入库(如libwxmsw28.a)以及一个DLL(如wxmsw28_gcc_custom.dll)。 wxWidgets的多库(multilib)构建会创建多个导入库(libwx28_base.a等)以及多个DLL文件。 无论何种wxWidgets构建,都会创建额外的静态库(如libwxexpat.a、libwxjpeg.a等)。这些库对于wxWidgets的DLL构建一般是不需要的,但是当使用静态构建的时候,则是必须的。 UNICODE UNICODE控制wxWidgets以及你的程序是否使用支持Unicode的宽字符串。大多数Windows 2000或更高系统上的应用程序都应该支持Unicode。早期的Windows版本不一定有Unicode支持。你应该总是使用wxWidgets的_("string")和_T("string")宏来确保硬编码的字符串编译时是正确的类型。 wxWidgets的Unicode(UNICODE=1)构建将会创建带有”u”后缀的库,例如”libwxmsw28u.a”、”wxmsw28u_gcc_custom.dll”。 wxWidgets的Unicode构建会在wxWidgets库的输出目录中创建”mswu”或”mswud”目录。 wxWidgets的ANSI(UNICODE=0)构建创建的库没有”u”后缀,例如”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。 wxWidgets的ANSI构建会在wxWidgets库的输出目录中创建”msw”或”mswd”目录。 常见问题 出现类似于”wx/setup.h: No such file or directory”的错误 你在构建选项中缺少了很重要的编译器搜索路径。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,那么打开你的项目的构建选项并给编译起的搜索路径中添加”$(#wx.lib)\gcc_dll\mswu“(这里假设是一个单一的Unicode DLL构建)。 出现类似于”cannot find -lwxmsw28u”的错误 构建选项中的链接库错了。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,确定你构建了什么库,并相应在构建选项中调整库的名字。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 若要构建的程序能够显示中文,要对codeblocks进行一下设置,在edit(编辑)菜单里面的文件编码选择UTF-8,否则编译报错。
关于命令中各参数的说明可以在\build\msw\config.gcc文件中找到
(更详细的描述,请参照http://wiki.codeblocks.org/index.php?title=WxWindowsQuickRef
http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_(MSW)
http://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW)
以上操作,可用1个批处理完成,如下:(对应路径改成自己安装的路径即可)
set path=C:\Program Files\CodeBlocks\MinGW\bin;C:\Program Files\CodeBlocks\MinGW\mingw32\bin
mingw32-make -v
cd C:\wxWidgets-2.9.1\build\msw
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 clean
pause
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1
pause
在wxWidgets2.9.1时可能会在编译时出错,请参考
http://zaazbb.blog.163.com/blog/static/1689785592010101223435157/