16 5月 2008

Windows上建構wxWidgets的編譯環境

如何在Windows上,建構wxWidgets的編譯環境呢?由於wxWidgets只是個Library,所以必須要安裝其他的IDE+Compiler才能寫出wxWidgets的程式,或者也是可以直接用文字編輯器寫code,然後在Comand Line底下compile也是可以(如果你夠勤勞的話...)。否則,裝一個IDE決對是一個事半功倍的事情。
wxWidgets是跨平台的Library,所以我就決定找一個優秀的跨平台IDE:Code::Blocks。這樣在任何平台都可以用熟悉的環境寫wxWidgets的程式,多麼令人蘇胡的一件事啊~ 話不多說,馬上裝來用用看!



1. 安裝Code::Blocks
到Code::Blocks的論壇Nightly Builds,找到最新的文章,裡面會有可執行的Windows版Code::Blocks的下載連結,依連結下載三個檔案
1) CB_[date]_[ver]_win32.7z
2) mingwm10.dll
3) wxmsw28u_gcc_cb.dll
將第2, 3個dll檔,解壓縮後放到Code::Block資料夾中,直接點codeblocks.exe檔 即可執行。

2. 安裝MinGW

因為Code::Blocks只是個單純的IDE,不提供Compiler,因此可以安裝MinGW就會有g++的compile環境。
下載:到MinGW的SourceForge頁面,找MinGw Installer,下載最新版的MinGW-[ver].exe下來安裝。

[備註] 下載Debugger:MinGW的子專案「GNU Source-Level Debugger」找最新的Release Candidate : gdb-[ver],下載gdb-[ver].exe後,放在$(MinGW)\bin即可。

3. 下載wxWidgets的Windows SDK - wxMSW
安裝時 一直按下一步即可 很方便

4. 編譯wxMSW的Library檔
到Command Line模式底下,輸入以下的指令
(註:$(wxWIN):wxWidgets的安裝目錄,$(MinGW):MinGW的安裝目錄)
(原文詳細說明)
% cd $(wxWIN)\build\msw
% set path=$(MinGW)\bin;$(MinGW)\mingw32\bin
% mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
% mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release

最後一個指令,會編出Library檔,這個Library檔才能讓Code::Blocks在Compile時做Linking

[make時的option解釋]
  • BUILD = debug, release
    => 可在Code::Blocks的專案中選擇Debug模式orRelease模式兩種Target
    若為debug, Debgu & Release都支援
    若為release, 只支援Release
  • UNICODE = 0, 1
    => 專案是否為Unicode,1為True,0是False
  • SHARED = 0, 1
    => 決定編出的Library檔案的檔案類型,1為DLL檔(ex: wxmsw28_gcc_custom.dll),供dynamic link用,0為static library檔(ex: libwxmsw28.a),供static link用
  • MONOLITHIC = 0, 1
    => 決定編出的Library為單一個Library檔or多個Library檔,這個option會決定你最後執行檔的大小喔。如果設1,就會把所有wxWidgets的Library檔全部包成一個檔(若為dynamic則為wxmsw28_gcc_custom.dll,若為static則為libwxmsw28.a);設0的話,則最後會產生多個Library檔(libwx28_base.a, libwxjpeg.a .... etc)
[編譯結果]
wxWidgets Library會根據上面下的參數,產生不一樣的Library資料夾
[ 註:$(wx)為wxWidgets的安裝目錄 ]
ex:
1. $(wx)\lib\gcc_dll\msw 未加Unicode & Debug參數
2. $(wx)\lib\gcc_dll\mswd 加Debug參數
3. $(wx)\lib\gcc_dll\mswu 加Unicode參數


5. 現在就可以開始Code::Blocks來寫一個簡單的wxWidgets的程式了
  • (1) 開打Code::Blocks,建立新專案
  • (2) 在Project裡 選擇「wxWidgets Project」
  • (3) 選擇主機上面安裝的wxWidgets版本
  • (4) 輸入Project名稱
  • (5) 選擇wxWidets的GUI Builder - 在這邊可以先選擇Code::Blocks內建的wxSmith Application Type可以選擇Dialog base/Frame base
  • (6) 輸入wxWidgets的安裝目錄,這邊建議輸入$(#wx)這是Code::Blocks的環境變數,然後會跳出一個視窗再輸入wxWidgets的安裝目錄即可,這樣以後就不用每次都必須輸入一次路徑了
  • (7) 選擇Compile的Configurations的模式,這邊必須依照剛編譯wxWidgets的Library的option去選擇,如果你的option為BUILD=debug,則可以勾選Debug模式&Release模式,若為BUILD=release,則只能選擇Release模式
  • (8) wxWidgets Library Settings 這邊的選項很重要,因為會決定你的Project最後會連結Library的路徑,Ex: 勾選Use wxWidgets DLL & Enable Unicode,Code::Blocks會自動幫你Liking到資料夾$(wx)\lib\gcc_dll\mswu裡面的DLL檔 (這邊的勾選 完全依賴於剛wxWidgets Library的option)
  • (9) 完成後,Code::Blocks會自動幫你建立一個基本的Frame or Dialog。先測試一下你之前做的步驟到底對不對,直接Build Project然,Run。如果成功,恭喜你,失敗的話,Check一下之前的步驟,看漏了哪個沒做到…

沒有留言: