wxWidgets环境搭建和项目设置

    这两个星期因为工作的需要学习了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即可编译项目了。


BTW:刚开始学C++的时候还是蛮痛苦的,什么内存分配和释放、引用、指针等都让人头疼,还有变量的声明和java完全不一样,一时间还真转不过弯来,不过熟悉了就好了,呵呵。

你可能感兴趣的:(eclipse,C++,c,gcc,C#)