对于GUI编程,最早使用过VC6的MFC,之后使用过GTK,Java的Swing,前一段时间还摆弄过纯Windows原生的Win32 API,现在则开始折腾wxWidgets,但是这些技术的学习了解并没有做出像样的软件,基本都停留在把样例编译出来后,简单的了解一些控件怎么使用而已.觉得不能胡乱折腾下去了,应该用这些技术扎扎实实的做一些东西.
工作是做嵌入式机顶盒软件开发的,而且主要是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编译的动态链接库
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中,即可以运行.
(3) 编译wxWidgets的静态库.进入wxWidgets-3.0.0\build\msw,对config.gcc进行修
改,修改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与解开的文件夹.