1、首先說一下配置的總體開發環境:git
1. windows 10 64位;github
2. CodeBlock 16.01 64位安裝版本,帶mingw的codeblocks-16.01mingw-setup.exe,地址http://sourceforge.net/projects/codeblocks/files/Binaries/16.01/Windows/codeblocks-16.01mingw-setup.exe;windows
3. wxWidgets 使用 3.0.2版本,由於CodeBlock中對應的wxWidgets版本最高是3.0.X,因此沒有選擇最新的3.1.0,地址https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.2/wxWidgets-3.0.2.zip;工具
2、CodeBlock安裝及環境配置ui
1. CodeBlock按安裝默認提示執行就好了,沒有特別須要注意的;編碼
2. 爲了可以在命令行cmd下使用Codeblock附帶的gcc編譯工具mingw,須要在windows操做系統的環境變量path中提供Codeblock中mingw文件夾的位置。操作系統
3. 打開環境變量輸入框:鼠標右鍵點擊「個人電腦」 -> 「屬性」->「高級系統設置」->右下方「環境變量」->「系統變量」-> 打開「Path」,在屬性內容最後變添加英文半角的分號「;」以後加入mingw所在的實際物理地址(包括盤符).net
3、wxWidgets編譯命令行
1. 解壓下載後的wxWidgets文件在沒有空格的路徑下(中間最好別有中文字符文件路徑);debug
2. 進入wxWidgets解壓目錄的\build\msw文件夾下(這個文件是專爲windows版本編譯的源文件),複製文件夾路徑以便在命令行下切換到該文件路徑進行編譯;
3. 打開命令行,切換到對應的文件夾下;
4. 輸入命令編譯,建議的命令以下:
mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD= release
參數簡單解釋以下:
1) BUILD 控制wxWidgets構建調試版本(BUILD=debug)或者是發佈版本(BUILD=release)。絕大多數狀況下你只須要wxWidgets的發佈版本就能夠了,由於你應該不想要去調試wxWidgets自身,同時你依然能夠經過連接wxWidgets的發佈版原本構建你本身的程序的調試版本。
- 調試構建wxWidgets會建立帶有」d」後綴的庫,例如」libwxmsw28d.a」、」wxmsw28d_gcc_custom.dll」。
- 調試構建wxWidgets會在wxWidgets庫的輸出目錄中建立」mswd」 或者 「mswud」 目錄。
- 發佈構建wxWidgets建立的庫沒有」d」後綴,例如」libwxmsw28.a」、」wxmsw28_gcc_custom.dll」。
- 發佈構建wxWidgets會在wxWidgets庫的輸出目錄中建立」msw」 或者 「mswu」 目錄。
2) 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。
3) 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構建通常是不須要的,可是當使用靜態構建的時候,則是必須的。
4) 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」目錄。
5) 參數中的CXXFLAGS="-std=gnu++11"是由於wxWidgets3.0.2編譯時會使用C++11語法特性,若是不添加會在編譯過程當中報錯,以下圖:
詳細參數說明看文件 <wxWidgets安裝目錄>/build/msw/config.gcc
詳細安裝說明看文件 <wxWidgets安裝目錄>/docs/msw/install.txt
編譯時間比較長,大概每一個半小時,視電腦速度定。
4、創建第一個wxWidgets工程
1. 設置wxWidgets編譯須要的頭文件和庫文件路徑,打開CodeBlocks,菜單 -> Setting -> Global variables...;
2. 在Current Set類型爲default的設置下添加一個全局的wx變量指向wxWidgets安裝目錄,該變量在建立工程時使用,爲的是wxWidgets安裝目錄變化以後只需更改此處;
3. 新建Project,選擇wxWidgets project;
4. Go -> 下一步,選擇wxWidgets 3.0.x
5. 下一步,輸入工程名、目錄; 再下一步,做者等(可不填)
6. 下一步,選擇GUI Builder,若是想徹底本身編寫代碼就選None,若是想可視化界面,選wxSmith或wxFormBuilder,若是不知道要選哪一個就選wxSmith吧; Application Type分爲Dialog和Frame,若是你用過其它GUI的話應該很清楚,不清楚的化Google吧
7. 下一步,選擇wxWidgets位置,若是配製了第2步默認$(#wx)就OK,也能夠直接選擇wxWidgets安裝目錄
8. 下一步,選擇GNU GCC Compiler或其它編譯器,鉤選Debug和Release
9. 下一步,選擇你的wxWidgets構建選項。必須和你編譯wxWidgets時所使用的選項一致!Use wxWidgets DLL用在編譯時選擇SHARE爲1的選項下,wxWidgets is built as a monolithic library 用在編譯時MONOLITHIC爲1的選項下,Enable unicode使用在編譯時UNICODE爲1的狀況下;
10. 選擇下一步以前會根據編譯的結果判斷是否能夠對wxWidgets源碼編譯出的內容進行調試,這裏能夠不關心提示,直接下一步便可;
11. 創建完畢,以下圖,Resources下選擇可進行可視化編輯,如想直接改代碼,可切換到Projects下
12. 設置編譯項目的相關屬性,解決C++11編譯、wxWidgets編譯連接文件和庫文件沒法找到的問題,在工程項目project屬性中編輯Compler settings 、 Linker settings 、Search Directories,讓編譯時項目能夠編譯C++11語法,找到wxWidgets的相關編譯連接文件,頭文件等,設置位置CodeBlocks -> Project –> Build options
(解決錯誤 fatal error: wx/setup.h: No such file or directory)
13. 編譯運行,不出問題的話可出現下圖結果: