对于GUI编程,最先使用过VC6的MFC,以后使用过GTK,Java的Swing,前一段时间还摆弄过纯Windows原生的Win32 API,如今则开始折腾wxWidgets,可是这些技术的学习了解并无作出像样的软件,基本都停留在把样例编译出来后,简单的了解一些控件怎么使用而已.以为不能胡乱折腾下去了,应该用这些技术扎扎实实的作一些东西.c++
工做是作嵌入式机顶盒软件开发的,并且主要是Bootloader一块,对GUI编程学习到的内容不能直接用于工做,这样致使学习的效率极其底下.如今工做起来,就喜欢用make,不喜欢用IDE,IDE系列VC6, Eclipse, NetBeans, CodeBlocks, CodeLite, LiteIDE(Go)还有一些记不住名字的小IDE,总之,感受没有必要学习IDE,啃下IDE大块头也是超级费时间.用make的好处在于我想怎么让编译器工具为我工做,就怎么为我工做,而IDE虽然也提供了很是人性化的编译配置功能, 但是配置起来也麻烦的很.编程
倾向于用绿色软件,解压即用,不用即删,干干净净的来,干干净净的走.并且倾向于用静态连接,全部的内容打包到一个exe中,固然这里说的确定是一些小软件,而那些一个软件中由成百上千个文件组成的或支持插件的小型软件,推荐用动态连接,这样的软件一我的估计也干不出来,不过可能也有这样的高人.工具
(1) 下载学习
wxWidgets-3.0.0.zip 主源码包测试
wxMSW-3.0.0_gcc471TDM_ReleaseDLL.7z 用GCC4.7.1编译的动态连接库ui
wxMSW-3.0.0_gcc471TDM_Dev.7z 包括动态连接库和导出库(相似于静态库)插件
(2) 先用上面这几个包,测试官方的HelloWorld示例.把wxWidgets-3.0.0\include与wxMSW-3.0.0_gcc471TDM_Dev\lib\gcc471TDM_dll\mswu 添加到编译器头文件搜索路径中,把wxMSW-3.0.0_gcc471TDM_Dev\lib\gcc471TDM_dll添加到连接器的搜索路径中,编译器用的是官方的Mingw gcc4.7.1,编译后的exe才280多KB,双击运行的时候,提示须要一些动态连接库,把这些动态连接库所在的路径添加到系统的环境变量PATH中,便可以运行.orm
(3) 编译wxWidgets的静态库.进入wxWidgets-3.0.0\build\msw,对config.gcc进行修ip
改,修改56行的为:开发
BUILD ?= release
直接编译发布版本的静态库,而后执行mingw32-make -f makefile.gcc 开始编译静态库,编译的输出在wxWidgets-3.0.0\lib\gcc_lib
(4) 编译完成后将wxWidgets-3.0.0\lib\gcc_lib添加到连接器的搜索路径,并把wxWidgets-3.0.0\lib\gcc_lib\mswu添加到编译器的头文件搜索路径中.
(5) 再次编译Hello World,发现生成的exe变大,而且还提示须要libgcc_s_dw2-1.dll与libstdc++.dll等,給连接器传递-static选项,再次生成exe,直接双击运行,再也不提示须要动态连接库了,exe大小要8MB多.
(6)再次修改入wxWidgets-3.0.0\build\msw\config.gcc
修改35行为:
LDFLAGS ?= -static
修改147行为:
RUNTIME_LIBS ?= static (不确认这个修改是否起做用)
(7)进入wxWidgets-3.0.0\samples执行mingw32-make -f makefile.gcc,开始编译示例代码,完成后会在每一个示例代码目录下生成gcc_mswu目录,这个目录中存放编译过程当中生成的目标文件和最终的示例程序,每一个示例程序的可执行文件也至少8MB多.
(8)拷贝wxFormBuilder目录到wxWidgets-3.0.0,这样wxWidgets的完整开发环境就基本搭建完成了.
(9)删除wxMSW-3.0.0_gcc471TDM_ReleaseDLL.7z,wxMSW-3.0.0_gcc471TDM_Dev.7z与解开的文件夹.