因为linux命令不熟悉,加上时间不充裕,仍然决定在win7_64bit下开发GUI程序,选择gtkmm是因为:
1. 在图形界面程序中,windows系统当之无愧GUI之王,用户友好性其他OS无法替代
2. Qt虽然版权放开了,但Qt信号机制让人不爽,过于紧耦合的设计让我感觉不像用C++写程序
3. wxWidget是一个很好的图形库,可以过度的宏包装形成的抽象,与微软的mfc一样滥
4. windows自带的api包倒是不错的选择,但是API繁琐且是C语言封装,很多地方设计不合理,留给程序员开发的*并不太多,很多地方写死了完全是定式
5. 其他的GUI库不熟,微软的.NET框架不错可惜不透明且不跨平台,SDL针对多媒体开发,WTL及COM是对win32API的封装还好,但学习代价大之外陷阱极多!
是故决定使用gtkmm开发GUI程序,我的开发环境是:
OS: windows 7
IDE: code::blocks
编译器:mingw-64
1. 首先安装mingw-64m
从http://source—forge.net/projects/mingw-w64/下载的x86_64-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z
之后解压到开发工具目录下,我的是D:\devs\mingw64
2. 安装code::blocks 谷歌搜索下官网下载
3. 设置一个新的编译器,将mingw64\bin下的x86_64-w64-mingw32-g++.exe等设置进去,然后新建一个hello World,在任务管理器下看看是否是test.exe*32还在test.exe,后者表示64位编译器编译成功(编译的helloworld是64位)
4. 去gtkmm官网下载windows版本的gtkmm,我的版本是gtkmm-win64-devel-2.22.0-2.exe,安装到某个目录下我的是d:\devlibs\gtkmm64
5. (关键)新建一个bat文件,内容如下:
setx PKG_CONFIG_PATH D:\devlibs\gtkmm64\lib\pkgconfig -m
pause
保存后用管理员权限运行,修改环境变量PKG_CONFIG_PATH值为gtkmm64目录下的lib\pkgconfig
6. 一般来说安装gtkmm时,安装程序已经设置了PATH为D:\devlibs\gtkmm64\bin
win+R打开cmd控制台程序,试试pkg-config是否可以运行,可以则键入如下命令pkg-config --modversion --cflags --libs gtkmm-2.4
如果第5个步骤成功则此时会显示一串-ID:/devlibs/gtkmm64/include/...-lintl
7. 进入codeblocks新建一个空项目,添加一个.cc文件,代码如下:
#include <gtkmm.h>
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
Gtk::Window window;
Gtk::Main::run(window);
return 0;
}
8. 菜单 Project > build options 弹出 Project build options 对话框
Compiler setting > Other options 写入 `pkg-config gtkmm-2.4 --cflags`
Linker settings > Other linker options 写入 `pkg-config --libs gtkmm-2.4`
确定关闭对话框
9. 编译运行,发现弹出类似于ld.exe | can not find -lgtkmm-2.4的链接错误(我使用-static静态编译)
打开gtkmm64\lib文件夹,找到类似于libgtkmm-2.4.dll.a的文件,将文件重命名libgtkmm-2.4.a(即去掉文件名中的.dll)
10. 编译成功, enjoy.