这两个星期因为工作的需要学习了C++的桌面开发,用到了wxWidgets开发库,经过二个星期的摸索,也基本上可以进行C++的开发了,目前已经有一个基本的应用出来了,虽然一直是做JAVA的,呵呵。下面将wxWidgets的环境搭建记录下,免得下次又再找了:-)
一、wxWidgets的环境搭建
1.安装MinGW
1)到http://www.mingw.org/下载MinGW-5.1.4下载端软件;
2)运行该软件后即执行下载安装MinGW的操作,选择如下包(xxx表示版本号):
gcc-g++-xxx
gcc-core-xxx
mingw32-make-xxx
mingw-runtime-xxx
binutil-xxx
w32api-xxx
3)下载完成后将安装到指定目录,假设目录为${MinGW_Path},并将bin目录下的mignw32-make执行文件改名为make
4)设置path环境变量,加入${MinGW_Path}/bin路径
5)打开控制台输入gcc -v查看信息,如果输出版本则安装正常
2.安装调试程序GDB
1)到http://www.gnu.org/software/gdb/download/下载gdb压缩包
2)解压后将bin目录下的gdb执行文件复制到${MinGW_Path}/bin目录下即可
3.安装wxWidgets
1)从http://www.wxwidgets.org/下载最新稳定版的wxWidgets
2)解压文件到安装目录,这里约定为${wxWidgetsPath}
3)从控制台进入目录${wxWidgetsPath}\build\msw
4)输入如下命令开始编译wxWidgets
make -f makefile.gcc BUILD=release UNICODE=1
其中BUILD是要编译的版本,有debug和release两个版本,UNICODE是指定是否使用unicode,有1和0两个值,对于中文用户要指定为1.一般使用这个两个编译参数即可,其他的可参考wxWidgets文档。我们这里编译release和debug两个版本,即输入以上的命令两次,第2次将release改为debug
5)编译完成后,可以在${wxWidgetsPath}\lib目录下看到输出目录gcc_lib,该目录下有很多.a文件和mswu和mswud两个目录。a文件命名规则是:如果是UNICODE=1编译的,则后面有u;如果是BUILD=debug编译的,则后面有d,两个可重复,即ud后缀,对应的mswu和mswud目录也是如此。
6)编译完成后,我们可以试试编译samples目录下的例子了,进入任意一个目录,然后输入如下命令进行编译:
make -f makefile.gcc BUILD=release UNICODE=1
完成后会在该目录下生成一个mswu目录,里面就有编译后的可执行文件了。如果编译出错了,则表示wxWidgets安装编译失败了,那就需要仔细核对重新编译。
4.Eclipse的安装
1)从http://www.eclipse.org/downloads/下载Eclipse IDE for C/C++
2)然后解压到指定的目录即完成了Eclipse的安装,因为Eclipse中默认使用的编译命令为make,所以我们在安装MinGW时将其bin目录下的mingw32-make改名为了make
二、Eclipse项目的设置
1.创建一个Empty C++ Project
2.打开项目的属性配置debug的设置,选择:C/C++ Build -> Settings选项页,在右边的Tool Settings中进行如下设置:
1)选择GCC C++ Complier -> Preprocessor,在右边定义如下symbols:
__WXMSW__(这个是windows平台的标示)
_UNICODE(如果wxWidgets是使用UNICODE编译的,一定要加该宏定义)
__WXDEBUG__(如果wxWidgets是使用DEBUG编译的,则需要增加该宏定义)
2)选择GCC C++ Complier -> Directories,在右边的Include paths中加入如下path:
${wxWidgetsPath}\lib\gcc_lib\mswud
${wxWidgetsPath}\include
${wxWidgetsPath}\contrib\include
如果还有其他外部库的话也要加进来,另外,项目本身的include目录也需要这次设置。
3)选择GCC C++ Compiler -> Miscellaneous,在右边的Other flags中加入如下字符串:
-c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing
4)选择MinGW C++ Linker -> Libraries,在右边的Libraries中加入如下库:
wxmsw28ud_media、wxmsw28ud_richtext、wxmsw28ud_html、wxmsw28ud_core、wxbase28ud、wxtiffd、wxjpegd、wxpngd、wxzlibd、wxregexud、wxexpatd、kernel32、user32、gdi32、comdlg32、winspool、winmm、shell32、comctl32、ole32、oleaut32、uuid、rpcrt4、advapi32、wsock32、odbc32
然后在右边的Library search path中加入如下路径:
${wxWidgetsPath}\lib\gcc_lib
${wxWidgetsPath}\lib
5)选择MinGW C++ Linker -> Miscellaneous,在右边的Linker flags中加入如下字符串:
-Wl,--subsystem,windows -mwindows
6)然后保存退出即可!
3.打开项目的属性配置debug的设置,选择:C/C++ Build -> Settings选项页,在右边的Tool Settings中进行如下设置:
1)选择GCC C++ Complier -> Preprocessor,在右边定义如下symbols:
__WXMSW__(这个是windows平台的标示)
_UNICODE(如果wxWidgets是使用UNICODE编译的,一定要加该宏定义)
2)选择GCC C++ Complier -> Directories,在右边的Include paths中加入如下path:
${wxWidgetsPath}\lib\gcc_lib\mswu
${wxWidgetsPath}\include
${wxWidgetsPath}\contrib\include
3)选择GCC C++ Compiler -> Miscellaneous,在右边的Other flags中加入如下字符串:
-c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing
4)选择MinGW C++ Linker -> Libraries,在右边的Libraries中加入如下库:
wxmsw28u_media、wxmsw28u_richtext、wxmsw28u_html、wxmsw28u_core、wxbase28u、wxtiff、wxjpeg、wxpng、wxzlib、wxregexu、wxexpat、kernel32、user32、gdi32、comdlg32、winspool、winmm、shell32、comctl32、ole32、oleaut32、uuid、rpcrt4、advapi32、wsock32、odbc32
然后在右边的Library search path中加入如下路径:
${wxWidgetsPath}\lib\gcc_lib
${wxWidgetsPath}\lib
5)选择MinGW C++ Linker -> Miscellaneous,在右边的Linker flags中加入如下字符串:
-Wl,--subsystem,windows -mwindows
6)然后保存退出即可!
4.保存配置即可,我们看到2和3两步都差不多,只是库的选择不同而已,debug的多了个d在每个库名称后面,我们在编译项目的时候看到debug模式下编译出来的和release模式下编译出来的文件大小相差是非常大的。
5.可以通过Eclipse菜单中的Project->Build Configurations->Set Active来设置当前编译的是debug或release.设置完成后,然后选择Project->Build Project即可编译项目了。