1. 程式人生 > >win7(64bit)使用mingw64配置gtkmm

win7(64bit)使用mingw64配置gtkmm

return linu net 決定 編譯運行 控制臺程序 g++ 代碼 compile

因為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://sourceforge.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.

http://blog.csdn.net/u014252696/article/details/24650081

win7(64bit)使用mingw64配置gtkmm