wxWidgets 在 Windows 下開發環境配置

本文基於 CodeBlocks (16.01) 和 wxWidgets (3.0.2) 搭建 Windows 環境下 GUI 開發環境。php

 

1.  CodeBlocks 官網,下載最新版安裝包 codeblocks-16.01mingw-setup.exe git

  此版本包含GCC,GDB,官網介紹爲: NOTE: The codeblocks-16.01mingw-setup.exe file includes additionally the GCC/G++ compiler and GDB debugger from TDM-GCC (version 4.9.2, 32 bit, SJLJ).github

  個人安裝目錄: C:\Program Files (x86)\CodeBlocks, 後續編譯要用到 CodeBlocks 內含的編譯器,故將 C:\Program Files (x86)\CodeBlocks\MinGW\bin 添加到環境變量 Path。
ui

 

2.  wxWidgets 官網,下載源碼包,各文檔介紹以下圖,編碼

 

 

 

 

 

 

 

 

 

 

     

 

3. 解壓縮 wxMSW-3.0.2.7z 到 C:\wxMSW-3.0.2, 在該目錄下,新建 bat 文件 wxBuild_ver.0.1.bat, 內容以下,spa

  @echo off  
  cd build/msw  
  title Compile wxWidgets  
  echo Start Compile ...  
  echo ---------------------------------------------------------------------  
  
  ::echo Clean Env
  ::mingw32-make -f makefile.gcc clean

  echo Compile Release Version
  :: SHARED=0, Static Link Library. SHARED=1, Dynamic Link Library.
  :: MONOLITHIC=0, Multiple Widgets. MONOLITHIC=1, Single Widgets.
  :: UNICODE=0, Not Support Unicode. Unicode=1, Support Unicode.
  mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1  

  echo Compile Debug Version
  mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1  

  echo ---------------------------------------------------------------------  
  echo Compile Succeed.
  pause  

.net

  執行該文件,便可完成編譯。 (各編譯選項的詳細解釋,見本文最後的附錄)debug

  注意:調試

  對於 wxWidgets 3.0.2 + CodeBlocks 16.02 (GCC 4.9.2) 的編譯,在編譯過程當中遇到 C++ 2011 的兼容性問題, wxWidgets 官方給的解決方案在這裏code

 

4. CodeBlocks 環境設置

  打開 CodeBlocks, Settings -> Global variables... , 添加 wx 變量和路徑以下圖,

  

 

5.  wx GUI 工程 demo

   

    

   

   

  默認工程的運行結果以下,

   

  至此,環境搭好了。

 

6. 最後的問題。

  基於 MinGW-GCC 編譯的程序,要依賴相關的 .dll 庫運行,因此,把生成的 exe 文件拷貝到其它電腦,將出現如下錯誤,

  

  解決方法,右鍵點擊工程,選擇 Build options,

  

 

  分別將 Debug 和 Release 的 Linker settings 標籤下的 Other Linker options 下添加 -static 連接選項。

  

 

  從新編譯工程。這樣生成的 exe 便可脫離開發環境運行。

 

附錄. 各編譯選項的解釋

 

BUILD 控制 wxWidgets 構建調試版本 (BUILD=debug)或者是發佈版本(BUILD=release)。

- debug 構建 wxWidgets 會建立帶有 」d」 後綴的庫,例如 」libwxmsw28d.a」、」wxmsw28d_gcc_custom.dll」。

- debug 構建 wxWidgets 會在 wxWidgets 庫的輸出目錄中建立 」mswd」 或者 「mswud」 目錄。

- release 構建 wxWidgets 建立的庫沒有 」d」 後綴,例如 」libwxmsw28.a」、」wxmsw28_gcc_custom.dll」。

- release 構建 wxWidgets 會在 wxWidgets 庫的輸出目錄中建立 」msw」 或者 「mswu」 目錄。

SHARED 控制 wxWidgets 是構建 DLL(SHARED=1) 仍是靜態庫 (SHARED=0)。利用構建的 DLL,主程序構建時間較快,可執行文件更小。可是可執行文件加上 wxWidgets DLL 的總大小更大,可是不一樣的可執行文件可使用同一個DLL。

- wxWidgets 的 DLL 構建會建立導入庫(如 libwxmsw28.a)以及 DLL 文件(如 wxmsw28_gcc_custom.dll)。你必須在發佈你的程序的時候包含這個DLL

- wxWidgets 的靜態構建只會建立靜態庫(如 libwxmsw28.a),發佈的時候也無須包含 wxWidgets 的DLL

MONOLITHIC 控制是構建一個單一的庫 (MONOLITHIC=1)仍是多個組件庫(MONOLITHIC=0)。使用單一構建,項目的設置和開發會更加簡單,若是你同時使用 DLL 構建的話, 你只須要分發一個 DLL 文件。若是使用非單一構建(multilib),會構建出多個不一樣的庫同時你能夠避免將整個 wxWidgets 的基本代碼連接到主程序,就能夠去掉不須要的庫。同時你也必須確保你選擇了正確的組件庫 (創建工程的時候有個庫組件選項)

- wxWidgets 的單一構建僅會建立一個 wxWidgets 導入庫(如 libwxmsw28.a)以及一個 DLL(如 wxmsw28_gcc_custom.dll)。

- wxWidgets 的多庫(multilib)構建會建立多個導入庫(libwx28_base.a等)以及多個 DLL 文件。

- 不管何種 wxWidgets 構建,都會建立額外的靜態庫(如 libwxexpat.a、libwxjpeg.a 等)。這些庫對於 wxWidgets 的 DLL 構建通常是不須要的,可是當使用靜態構建的時候,則是必須的。

UNICODE 控制 wxWidgets 以及你的程序是否使用支持 Unicode 的寬字符串。大多數 Windows 2000 或更高系統上的應用程序都應該支持 Unicode。早期的Windows 版本不必定有 Unicode 支持。你應該老是使用 wxWidgets 的 _("string") 和 _T("string") 宏來確保硬編碼的字符串編譯時是正確的類型。

- wxWidgets 的 Unicode(UNICODE=1)構建將會建立帶有 」u」 後綴的庫,例如 」libwxmsw28u.a」、」wxmsw28u_gcc_custom.dll」。

- wxWidgets 的 Unicode 構建會在 wxWidgets 庫的輸出目錄中建立 」mswu」 或 」mswud」 目錄。

- wxWidgets 的 ANSI(UNICODE=0) 構建建立的庫沒有 」u」 後綴,例如 」libwxmsw28.a」、」wxmsw28_gcc_custom.dll」。

- wxWidgets 的 ANSI 構建會在 wxWidgets 庫的輸出目錄中建立 」msw」 或 」mswd」 目錄。

 

其餘問題可參考 wxWidgets 開發者論壇

完。

相關文章
相關標籤/搜索