本文中全部的體驗,在Code::Blocks中進行。工具
爲了在Code::Blocks中編譯運行C++寫的wxWidgets程序,須要再作些設置。學習
首先,須要在環境變量裏添加一個wxWidgets根目錄環境變量。設置方法相似於2.3中設置PATH變量的方法。在Win7中,右擊桌面上的「計算機」圖標,選菜單中的「屬性」,在「系統屬性」對話框中,完成以下圖從1到5的一系列操做。新增的變量命名爲wxwin,值爲X:\wxWidgets-3.0.0。ui
接下來的設置要在Code::Blocks中進行。spa
打開Code::Blocks,選擇菜單Settings->Global Variables…,在設置default下新創建一個wx變量,在Build-in fields:下,base中填入「${wxwin}」(wxwin是剛纔設置好的一個變量),include中填入「${wxwin}\include」,lib中填入「${wxwin}\lib」,這些都是開發中須要用到的「環境」中的一部分。.net
下面將「白手起家」,由創建「空項目」開始,作一個簡單的應用。程序改編自在線教程《wxWidgets tutorial》(http://zetcode.com/gui/wxwidgets/)的「First programs in wxWidgets」部分的第一個程序。這個教程,將做爲建議學習方案中的主教程之一。debug
創建項目的過程是:設計
(1)經過菜單「File」->「New」->「Project…」,選擇「Empty project」建一個空項目調試
(2)點擊「go」按鈕後,有一個歡迎界面,點擊「next」,出現下圖,填入項目名。我創建的項目名稱爲wxTest。code
(3)點擊「next」後,要求選擇編譯器及生成的目標文件類型,照下圖選擇blog
(4)點擊「Finish」後,將生成一個空項目,如圖
(5)點擊菜單File->New->File...爲項目新建一個源程序文件。在連續出現的幾個對話框中,選擇要增長的文件類型是「C/C++ source」(即源文件),再一個對話框中選擇語言是「C++」。接着,在下圖所示的對話框中,給出帶完整路徑的源文件名(本例中用main.cpp),注意將Debug複選框選中。
(6)點擊「Finish」後,將下面的源程序輸入(或粘貼)到文件main.cpp中。
加入了源代碼以後的項目以下圖所示:
能夠暫時不考慮程序中的語句是什麼意思。能完成運行程序的完整過程,是咱們當前的任務。能運行程序了,後面再看「門道」。
下面將對這個項目進行編譯,進而看到運行結果。
選擇菜單「Build」中的「Build」選項(或者工具欄中的相應按鈕)對項目進行編譯、鏈接。程序第一行即出現錯誤。錯誤提示是:
也就是說,找不到要包含的頭文件wx\wx.h。
這須要設置「搜索路徑」解決。選菜單Project->Build options...,在選項卡Search directories中,設置Compiler。經過「Add」增長目錄X:\wxWidgets-3.0.0\lib\gcc_dll\mswud和X:\wxWidgets-3.0.0\include,結果以下圖所示:
接着Build,將再也不有語法錯誤。
出現的一大堆錯誤提示,來自於鏈接環節,問題是找不到庫文件。
選菜單Project->Build options...,在選項卡Linker settings中,須要加入要鏈接的「目標文件」。如圖所示,經過Add按鈕加入X:\wxWidgets-3.0.0\lib\gcc_dll文件夾中的全部.a文件(實際上,選擇其中幾個須要的就能夠了。由於不知道究竟須要哪幾個,全選是最省事的辦法):
而後再編譯,0 errors, 0 warnings。成功!
可是運行程序時,會出現錯誤,以下圖:
按提示來,在X:\wxWidgets-3.0.0\lib\gcc_dll中找到wxmsw30ud_gcc_custom.dll文件,將其拷貝到項目所在文件夾,再運行,就看到了期盼的窗口,如圖所示。
出現上面的運行錯誤,緣由是我在Linker settings加入的是lib\gcc_dll文件夾中的.a文件,這些屬於「動態連接庫」(這個術語本身百度去吧)。這種方式的好處在於編譯速度快,目標代碼小,可是在編譯好的程序運行時,必需要能找到須要的.dll文件。最簡單的辦法,就是拷貝.dll文件。
這個程序很短,結果也只是一個空空的窗口,可是做爲掌握編譯、運行窗口程序的案例,卻也是足夠的了。
以上的設置和文件複製,「有經驗」以後能夠提早完成。上面的描述方法,是考慮到但願讀者對各個環節的問題,能多些感受。
另外一種在Code::Blocks中創建wxWidgets Project的方法,是經過「嚮導」開發應用。這種方法用得不是不少,能夠做爲了解。
本節下面的材料,非做者原創,整理自http://www.cnzui.com/archives/962。
利用嚮導開發的具體步驟是:
(1)經過菜單「File」->「New」->「Project…」,選擇最後面的wxWidgets project。
(2)點擊「Go」進入工程配置嚮導,首先會出來一個歡迎窗口,直接next後,選擇安裝好wxWidgets版本。
注:Code::Blocks 13.12中,已經有了對wxWidgets 3.0.x的支持。須要選對版本,不然可以繼續生成應用程序,可是不能正確鏈接和運行。
(3)按「Next」,而後輸入項目名「wxtest」,選擇保存項目的文件夾。
(4)繼續「Next」,輸入做者和及一些版權說明信息。
(5)繼續「Next」,選擇GUI設計工具和程序類型,用wxSmith和Dialog based。
(6)按「Next」,接下來的就是wxWidgets環境的一些設置了,這裏咱們輸入剛纔設置的wxWidgets根目錄,直接填入「$(#wx)」就能夠了。
(7)按「Next」,這裏咱們看到默認就是選擇了MinGW編譯器了,下面的咱們只作Debug版本,因此只選上「Create 「Debug」 configuration」。
(9)繼續「Next」,接下來要選擇怎麼使用wxWidgets庫,這裏根據你編譯的wxWidgets庫是什麼樣的來。
後注:在wxWidgets Library Setting部分,三個勾都打上。這樣,只要在編譯時SHARED=1,知足了Use wxWidgets DLL,使用動態連接接庫的要求;用MONOLITHIC=1,知足了wxWidgets is built as a monolithic library,構建單一庫;而UNICODE=1,知足支持寬字符串Enable unicode。也就是說,當初編譯wxWidgets時用:mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug和mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release,就能夠知足生支供調試和發佈的代碼兩項要求。
(10)按「Next」,由於選擇了「Configure Advanced Options」,因此要對使用wxWidgets庫作更多的設置,這裏咱們選上咱們使用lib方式調用(要求編譯wxWidgets時用SHARED=0參數,生成了靜態庫文件)。
(11)按「Next」進到最後一步,咱們選擇須要用到的庫,不知道的話所有選上。
(12)點擊「Finish」,工程隨即創建成功。
這時能夠查看項目中自動生成的文件,其中有.cpp的源文件,也有.h的頭文件。再細讀,和3.1中輸入的程序長得差很少。
其實,嚮導的做用,就是經過一系列的選擇,由嚮導程序自動生成應用程序。
如上步驟建立的應用程序的運行的結果是:
在編譯和運行時,都有可能出現一些錯誤。這通常不是程序自己的問題,而是Code::Blocks的編譯環境和運行的支持文件不全而形成的。
請參閱3.1.2小節,可能會幫助你排除問題,讓程序正確運行。
http://blog.csdn.net/sxhelijian/article/details/26164181