當前位置:首頁 » 編程軟體 » wxwidgetslinux編譯

wxwidgetslinux編譯

發布時間: 2024-12-08 03:18:38

『壹』 如何使用 wxwidgets開發界面

wxWidgets是一個跨平台的軟體開發包。它誕生於1992年,最初的名子是wxWindows,但由於Microsoft的抗議,在2004年改名為wxWidgets。它最初是被設計成跨平台的GUI軟體開發包,但後來隨著越來越多的人參與進來,為wxWidgets加入了許多非GUI的功能,如多線程(MultiThread)、網路(Network)等。並且從最初的只支持C++語言,逐漸發展成為支持數種語言(如Python、Perl、C#、Basic等)。因此,現在的wxWidgets已經不再是單純的跨平台的GUI軟體開發包,而是一個可以支持多種操作系統平台的能夠在多種語言中使用的通用跨平台軟體開發包。


由於wxWidgets最開始是為C++而設計的,因此,本文主要討論了wxWidgets在C++中的使用。


為什麼選擇wxWidgets?


目前支持C++的軟體開發包非常多,比較有名的除了wxWidgets外,還有一些其它的軟體開發包,如MFC、QT、ACE等。即然有這么多開發包,那麼我們為什麼要使用wxWidgets呢?在給出答案之前,讓我們首先來看一看上述的三種軟體開發包的特性。


1. MFC


MFC是Microsoft提供的軟體開發包。MFC雖然十分強大,但它只能運行在Windows下運行。而且它是收費的。


2. QT


QT是由Trolltech 公司開發的一套跨平台軟體開發包。它和wxWidgets類似,但是QT只在linux下免費,而在Windows或Unix下使用QT要向Trolltech公司支付版權費。


3. ACE


ACE雖然是免費開源的,但是它沒有提供GUI功能。


從以上三個軟體開發包可以看出,它們雖然有各自的優勢,但是它們或多或少地都會使開發受到限制。而使用wxWidgets將不會有以上所述的問題。wxWidgets和MFC、QT、 ACE的特性對比如表1所示。

註:其中免費中的「是/否」代表QT在linux平台上的Free Edition是免費的,而在windows和unix下使用QT是收費的。而開源中的「是/否」代表QT有一個基於GPL的開源版本,但要進行商業開發,需要使用它的商業版本。


使用wxWidgets編寫程序


學習一種編程語言的最好方法就是用它去編寫程序,學習wxWidgets也不例外。由於wxWidgets的主要功能是實現跨平台的GUI,因此,本文主要從GUI入手,討論wxWidgets在C++中如何編寫跨平台的應用程序


1. 應用程序類的建立


使用wxWidgets建立系統需要一個類來描述整個應用程序。這個類必須從wxApp類繼承。


class MyApp : public wxApp //應用程序類

{

public:

virtual bool OnInit(); // 在應用程序啟動時調用,如果返回false,退出應用程序

};

這個類只覆蓋了wxApp的一個虛方法OnInit。可以用這個方法在程序啟動時做一些驗證,如果驗證失敗,可以通過返回false退出應用程序。當然,由於這個函數是應用程序的入口點,所以建立主窗體的工作要在這個函數中完成。


2. 建立窗體類


wxWidgets中關於窗體的類很多,如果要建立一般窗體的話,可以從wxFrame繼承。

class MyFrame : public wxFrame //窗體類

{

public:

MyFrame(const wxString& title); // 窗體的構造函數

};

3. 向窗體中加入控制項


在本文中向這個窗體加入了一個菜單條(Menu Bar)、一個狀態條、一個Panel和一個按鈕。一般我們會在主窗體的構造函數中加入這些控制項。


MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)

{

wxMenu *fileMenu = new wxMenu; // 建立「文件」菜單

wxMenu *helpMenu = new wxMenu; // 建立「幫助」菜單

// 向菜單中添加子項

helpMenu->Append(wxID_ABOUT, _T("關於"tF1"), _T("顯示關於對話框"));

fileMenu->Append(wxID_EXIT, _T("退出"tAlt-X"), _T("退出應用程序"));

wxMenuBar *menuBar = new wxMenuBar(); // 建立一個菜單條

menuBar->Append(fileMenu, _T("文件")); //將「文件」菜單加入到菜單條

menuBar->Append(helpMenu, _T("幫助")); //將「幫助」菜單加入到菜單條

SetMenuBar(menuBar); //將菜單條放到窗體上

wxPanel *panel = new wxPanel(this); //建立一個Panel

wxButton *button = new wxButton(panel, wxID_ABOUT, "關於", wxPoint(20, 20), wxSize(50, 30)); //建立一個Button

CreateStatusBar(2); //建立一個兩欄的狀態欄

SetStatusText(_T("歡迎使用wxWidgets!")); //設置狀態欄的文本

在數組sample_xpm中描述了sample.ico的屬性和圖標本身。如X代表紅色; o代表黃色等。然後在源程序中通過include 「sample.xpm」引用這個資源文件。要想從這個資源文件中裝載圖標。可使用SetIcon(wxICON(sample)); wxICON讀取資源文件,而SetIcon將這個圖標設置為frame的標題欄圖標。要想將ico文件轉換為這種資源文件,可使用一個免費軟體XnView進行轉換。


5. 顯示主窗體


顯示主窗體非常簡單,只需要將上面建立的MyFrame類實例化,並調用wxFrame的Show方法顯示即可。這些代碼可以寫在MyApp類的OnInit方法中。


bool MyApp::OnInit()

{

//建立MyFrame類的實例

MyFrame *frame = new MyFrame(_T("第一個wxWidgets程序"));

frame->Show(true); //顯示主窗體

return true; //必須返回true,否則應用程序將退出

}

在以上代碼中Show方法有一個參數,如果為true,則以模式窗口的形式顯示,否則以非模式窗口的形式顯示。


6. 向窗體中加入事件


到目前為止,這個程序的界面已經完成了,但還未響應任何事件,下面就詳細闡述如何向這個應用程序中加入事件代碼。

對於事件來說,一般都會由兩部分組成。


(1)調用事件部分


當程序發生某個動作時,如點擊按鈕;選中某個控制項,可能需要執行一段代碼。而這段代碼一般是由系統負責調用的,也就是說系統通過事件函數指針調用相應的代碼。


(2)事件函數本身


事件函數與普通函數一樣,只不過它是在發生了事件之後,由系統調用的。


在wxWidgets中是通過事件哈希表(Event Hash Table)來進行事件處理的,即將相應的事件函數指針保存在一個哈希表中,然後當事件發生時,從這個哈希表中找到相應的事件函數指針,然後通過函數指針調用函數。在使用事件哈希表之前,必須定義它。由於定義哈希表非常復雜,而且每個需要處理事件的類都需要同樣的代碼,因此,wxWidgets為此定義了一個宏DECLARE_EVENT_TABLE()來定義哈希表。可將這個宏寫在MyFrame類的任何位置。它相當於將以下語句放到了MyFrame類中。


private:

static const wxEventTableEntry sm_eventTableEntries[];

protected:

static const wxEventTable sm_eventTable;

virtual const wxEventTable* GetEventTable() const;

static wxEventHashTable sm_eventHashTable;

virtual wxEventHashTable& GetEventHashTable() const;

其中靜態數組變數sm_eventTableEntries保存了MyFrame類中的所有的事件信息。


上面的代碼聲明了處理事件哈希表的一些方法,即然聲明了,就得實現。由於實現代碼也都一樣,因此,wxWidgets也為實現這些方法定義了一組宏。實現這些方法的宏如下所示。


BEGIN_EVENT_TABLE(MyFrame, wxFrame)

EVT_MENU(wxID_EXIT, MyFrame::OnQuit)

EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)

EVT_BUTTON(wxID_ABOUT, MyFrame::OnAbout)

END_EVENT_TABLE()

其中BEGIN_EVENT_TABLE(…)實現了上面定義的方法,以及初始化了靜態變數sm_eventTable。後面兩個EVT_MENU和一個EVT_BUTTON宏初始化了靜態變數sm_eventTableEntries,即將這兩個事件函數的指針(button和about菜單使用一個事件函數OnAbout)和控制項ID保存在sm_eventTableEntries中,最後的END_EVENT_TABLE()宏做為一個空的事件函數指針賦給了sm_eventTableEntries,這有些象C語言中處理字元串,將最後一個字元賦為』"0』,這樣就可以知道哪是結尾了。

向窗體中加入事件的最後一步是聲明和實現事件函數。在本例中聲明了兩個事件函數。

void OnQuit(wxCommandEvent& event);

void OnAbout(wxCommandEvent& event);

可以將這兩個函數聲明放到MyFrame中的任何位置。下面是它們的實現代碼。


void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))

{

Close(true);

}

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))

{

wxString msg;

msg.Printf( _T("這是一個關於對話框的例子."n")

_T("歡迎使用 %s"), wxVERSION_STRING);

wxMessageBox(msg, _T("¹關於"), wxOK | wxICON_INFORMATION, this);

}

其中OnQuit函數調用Close(true)關閉MyFrame,由於MyFrame是主窗體,因此,在MyFrame關閉後,應用程序也隨之關閉了。OnAbout使用wxMessageBox函數彈出一個信息對話框。


7. 運行程序


到目前為止,這個程序的代碼已經基本完成了,但是在前面曾說過,MyApp中的OnInit方法在應用程序啟動時執行,那麼是誰調用了OnInit方法呢?答案當然是wxWidgets。wxWidgets為了調用這個方法,提供了一個宏IMPLEMENT_APP(…),這個宏有一個參數,需要將MyApp做為參數傳入。即IMPLEMENT_APP(MyApp)。這個宏相當於一個WinMain函數(和控制台程序的main函數類似),即在WinMain函數中調用了MyApp中的OnInit函數。在加入這個宏後,就可使用一個C++編譯器將以上的源程序編譯生成exe文件了。

『貳』 wxWidgets支持嵌入式linux嗎

不能。 因為 mingw 只能編譯出 Windows 運行的程序。囧rz mingw 只是一個編譯器……具體要看你寫的這個代碼對於 Linux 和 Mac 環境的兼容性。 mingw 還是含有一些東西的,這些東西可能會對你的移植產生影響。 我記得你只要能保證 mingw 下面所有軟...

『叄』 如何在 Ubuntu/Debian/Linux Mint 中編譯和安裝 wxWidgets

1. 下載 wxWidgets
第一步你需要從wxwidgets.org下載wxWidgets源碼文件。
做完後,解壓到目錄。

2. 設置編譯環境
要編譯wxwidgets,我們需要一些工具包括C++編譯器,在Linux上是g++。所有這些可以通過apt-get工具從倉庫中安裝。
我們還需要wxWidgets依賴的GTK開發升培老庫。
$ sudo apt-get install libgtk-3-dev build-essential checkinstall
這個叫做checkinstall的工具允許我們為wxwidgets創建一個安裝包,這樣之後就可以輕松的使用包管理器來卸載。

3. 編譯 wxWidgets
進入到wxWidgets解壓後的目錄。為了保持清潔,創建一個編譯用的目錄。
$ mkdir gtk-build
$ cd gtk-build/
現在運行configure和make命令。每個將花費一些時間來完成。
$ ../configure --disable-shared --enable-unicode
$ make
"--disable-shared"選項將會編譯靜態庫而不是動態庫。
make命令完成後,編譯就成功了。是時候安裝wxWidgets到正確的目錄。
更多信息請參考install.txt和readme.txt,這可在wxwidgets中的/docs/gtk/目錄下找到。

4. 安裝 checkinstall
現在我們不使用"make install"命令,我們使用checkinstall命令來創建一個wxwidgets的deb安裝包。運行命令:
$ sudo checkinstall
checkinstall會詢問幾個問題,請保證在提問後提供一個版本號,否則將會失敗。
完成這一切後,wxWidgets就安裝好了,deb文件也會創建在相同的目錄下。

5. 追蹤安裝的文件
如果你想要檢查文件安裝的位置,使用dpkg命令後面跟上checkinstall提供的包名。
$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a

6. 編譯示例
編譯wxWidgets完成後就可以馬上編譯示常式序了。在相同的目錄下,一個新的sample目錄已經創建了。
進入它並運行下面的命令
$ compile samples
$ cd samples/
$ make
make命令完成後,進入sample 子目錄,這里就有一個可以馬上運行的Demo程序了。

7. 編譯你的第一個程序
你完成編譯demo程序後,可以寫你自己的程序來編譯了。這個也很簡單。
假設你用的是C++,這樣的話你還可以使用編輯器的高亮特性。比如gedit、kate、kwrite等吵升等。或者用全功能的IDE像Geany、Codelite、Codeblocks等等。
然而你的第一個程序只需要用一個文本編輯器來快速完成。
如下:
#include<wx/wx.h>
classSimple:public wxFrame
{
public:
Simple(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250,150))
{
Centre();
}
};
classMyApp:public wxApp
{
public:
boolOnInit()
{
Simple*simple =newSimple(wxT("Simple"));
simple->Show(true);
returntrue;
}
};
wxIMPLEMENT_APP(MyApp);
現在保存並用下面的命令編譯。中清
# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std`-o program
# run
$ ./program

和非標準的庫一起編譯
面展示的wx-config命令默認只支持標準的庫。如果你使用的是Aui庫,那麼你需要指定額外用到的庫。
$ g++ code.cpp `wx-config --cxxflags --libs std,aui`-o program

『肆』 各位高手,小弟正在為選擇使用Qt還是WxWidgets而煩惱,請大家給條明路吧!

很好的一篇文章
原文:我所知道的三種開源跨平台GUI toolkits—— GTK、Qt和wxWidgets

1、GTK+

GTK+基礎

GTK+最初是GIMP的專用開發庫,後來發展為Linux下開發圖形界面的應用程序的主流開發工具之一。GTK+2.0是自由軟體,並且是GNU工程的一部分。GTK+2.0的許可協議是LGPL。

GTK+使用C語言開發,但是其設計者使用面向對象技術。 在GNOME平台上提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)綁定,其他的綁定有Ada、 D、 Haskell、PHP和所有的.NET編程語言。

與其他很多部件工具箱不同,GTK+並不基於Xt。這一決策優劣互見:優點是GTK+可以應用於其他系統,其靈活性也很強;而缺點就是它無法利用以傳統方法為X11定製的X資源資料庫

Glade是一個界面設計工具,但是它也包含了一種描述GUI界面的XML語言,它和libglade一起工作就可以直接使用GTK和GNOME控制項。

2、Qt

Qt簡介

Qt是Trolltech公司的一個產品。
Qt是一個多平台的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的很容易擴展,並且 允許真正地組件編程。

自從1996年早些時候,Qt進入商業領域,它已經成為全世界范圍內數千種成功的應用 程序的基礎。Qt也是流行的Linux桌面環境KDE 的基礎,KDE是所有主要的Linux發行版的一個標准組件。

Qt支持下述平台: MS/Windows - 95、98、NT 4.0、ME、和2000
Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台
Macintosh - Mac OS X
Embedded - 有幀緩沖(framebuffer)支持的Linux平台。

3、wxWidgets

開源軟體(LGPL),針對C++、Python以及Perl的跨平台工具集。

詳細介紹,參見細述 wxWindows
wxWidget作為一個C++ GUI Library從1992發展到現在,已經在全球范圍內產生了極大的影響力,利用這個類庫進行GUI開發的軟體更是不計其數。

wxWidgets原名wxWindows,是由Julian Smart於1992年還在英國愛丁堡大學人工智慧應用研究所開始的一個項目。Julian Smart現在是Anthemion軟體公司的技術總監。

簡單地說,wxWidgets提供了用於可在多平台上開發GUI應用程序的一整套簡單易學易用的API。wxWidgets支持的多平台包括
Windows 3.1/95/98/NT/2000/XP、帶有Motif
1.2版本以上的Unix、帶有GTK+的Unix/Linux/*BSD、Mac等等。開發者只需要用自己使用的系統平台的編譯器編譯源程序,並鏈接上
相應的庫文件,生成的程序代碼即具有該平台的外觀和界面。在這些GUI之上,wxWidgets還提供了在線幫助、網路編程、流處理、多種常用圖形格式支
持、資料庫支持、HTML察看和列印,等等各種強大的功能。

wxWidgets支持的Windows上的多種流行編譯器包括:
Visual C++ 1.5, 4.0, 5.0, 6.0
Borland C++ 4.5, 5.0
Borland C++ Builder 1.0, 3.0
Watcom C++ 10.6 (Win32)
Cygwin
MinGW32
Metrowerks CodeWarrior 4

wxWidgets和GTK+的一大吸引力是它的wxWidgets 2 licence類型是屬於LGPL ( Lesser
General Public License
)的,也就是說,使用它開發的軟體並不要求一定得公開源碼。這樣,無論是免費軟體的開發者、GPL類型軟體開發者,還是純粹商業軟體開發者都可以免費使用
這個軟體包。

相比之下,TrollTech的Qt似乎正是因為此因素而影響了它的受接受程度,因為用Qt開發商用軟體者所需交納的費用對於個人
開發者來說還是比較昂貴的,而且分單平台、二平台、三平台(即Qt/X11、Qt/Windows和Qt/Mac都包含在內了)三個不同產品包,又分
Professional和Enterprise不同Edition亦即不同價位,而且開發人員數不同價格也不同。

從這點說來,wxWidgets是絕對具有優勢的。另外Qt起源於Linux上的開發,後來推展到Windows、Mac等其它平台;而wxWidgets恰好相反,始於Windows,其後移植到Unix等其它平台。

關於LGPL(Lesser General Public License ) 許可,這是 GNU
許可家族中一個不太嚴格的許可。LGPL 允許任何人使用該庫提供的功能,而不
要求用戶公開應用程序代碼。(這對於許多工業應用來說很重要,因為由於以前的協議或許可,這種場合下一般不希望公開代碼或者公開代碼是顯然不現實的。)使
用 LGPL 許可,您既可以是開放源碼社區的好夥伴也可以是好公民。

中文非正式翻譯參見 http://gnu.freehostingguru.com/lgpl/

其他資源:知名 GUI lib 簡評 (GTK+, Qt, wxWidgets)

Technorati Tags: GTK, Qt, wxWidgets, 圖形界面, 跨平台

從網上搜到的,僅供參考,也許對你會有一點小小的幫助!

『伍』 codeblocks頭文件問題

codeblocks+wxWidgets這一對開源組合真是夠強大,codeblocks支持的項目類型多的驚人,wxWidgets又為codeblocks加上了相當強勁的可視化程序開發功能,可以說用這對組合來開發程序絲毫不比在VS中用C#困難,而且由於codeblocks和wxWidgets都是開源軟體,在windows和linux下都有相應的版本,移植程序就成為一件相當輕松的事情。

以下內容轉載自 http://shiningray.cn/windows-shang-pei--codeblocks-wxwidgets.html,內容有所改動,原文圖片沒有附上,有需要的去上面的地址查看

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

前提准備
編譯器
你至少應該正確安裝了免費的MinGW/GCC編譯器或者是某種微軟的編譯器(Express editions是免費的,但是你還需要安裝Platform SDK)。如果是用MinGW/GCC,至少要准備gcc-core、gcc-g++、binutils、w32api以及mingw32-make包;同時,確保包含編譯器可執行文件的目錄(一般是C:\MinGW\bin)在Windows的PATH環境變數中。
提示:設置完環境變數之後需要重啟計算機才能生效。

如果選擇MinGW/GCC編譯器,可以在直接選擇包含MinGW的Code::Blocks安裝包,見下一節。

最新版的Code::Blocks
請下載最新的8.02發布版。尚未選擇編譯器可以選擇包含MinGW的安裝包。(現在已經有10.05版本了,而且可以用8.02版本的漢化包,漢化方法去google一下吧,到處都有)

wxWidgets
你可以選擇下載wxWidgets的源代碼然後自己進行構建,或者是直接安裝預編譯的wxPack。

wxWidgets源代碼
安裝包較小,可以根據自己的需求進行自定義構建,但是需要花費長時間進行編譯。如果不清楚編譯選項,可能導致無法成功配置Code::Blocks。

目前推薦的wxWidgets的版本是2.8.11。你也可以檢查一下wxWidgets的下載頁面看看有沒有更新的穩定版下載。強烈建議你將代碼安裝到不帶空格的路徑中。必須保證盤中至少有300MB的剩餘空間。

wxPack

雖然安裝包達200MB,全部安裝需要3G,但是包含了預編譯的所有可能用到的庫文件,而且包含VC和GCC的兩種版本,可以不用去考慮構建選項了。

當前wxPack的穩定發布版是 v2.8.7.03,基於 wxWidgets 2.8.7。點擊此處下載 wxPack v2.8.7.03 (wxPack_v2.8.7.03.exe, 236.9 MB)。你也可以查看wxPack下載頁面看看有沒有更新的穩定版下載。強烈建議將wxPack安裝到沒有空格的路徑中。如果你選擇只MSVC版本,應保證至少有700MB的剩餘空間;如果只選擇MinGW/GCC版本,則應保證至少有2.2GB的剩餘空間。

提示
如果磁碟使用了NTFS格式,可以開啟文件壓縮功能,上述的目錄在壓縮後可以減少50%的空間佔用。

編譯wxWidgets
使用wxPack則可以跳過這一步。

打開命令行(在開始菜單中點擊「運行」,輸入cmd並回車)。如果使用的MSVC,你可以使用特定的用於設置環境變數的命令行。如果你使用的MSVC版本還要求你單獨下載Platform SDK,確保全部包含了標准編譯工具和Platform SDK中要用到的環境變數。

轉到wxWidgets的構建目錄,其中是源碼所在路徑,通常是C:\wxWidgets-2.8.7:

cd \build\msw執行構建命令,MinGW/GCC推薦的命令是:

mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1MSVC推薦的構建命令是:

nmake -f makefile.vc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1這個過程需要花很久,快的機器大概30分鍾可以完成,慢的可能就需要幾個小時了。

如果使用的GCC的版本較新,構建過程中可能會出現大量的警告。這樣會明顯導致構建過程變慢;你可以將錯誤信息重定向到文件中,在上述命令後面添加2> err.log,也可以通過2>nul直接禁止警告信息。

其中關於BUILD、SHARED、MONOLITHIC以及UNICODE選項的解釋,請仔細參考文章後面關於wxWidgets的構建參數的解釋,這些參數十分關鍵,他們直接定義了你所使用的基本的wxWidgets開發環境。你必須嚴格按照你的編譯參數設置Code::Blocks的配置向導。

在Code::Blocks中創建wxWidgets項目
在Code::Blocks的起始頁面中,選擇「Create a new project」,也可以在File菜單中,選擇「New」 -> 「Project…」。

找到並選擇「wxWidgets project」,並創建,接下來會出現一個向導幫助進行wxWidgets項目的配置:

第一個頁面是簡介,可以選擇以後跳過。
選擇你要使用的wxWidgets版本。如果你是按照本文的過程配置的,那麼你應該選擇「wxWidgets 2.8.x」。
設置你的項目的名字的位置。
輸入作者的信息(非必要)
選擇自動代碼和文件生成的選項。
選擇wxWidgets的位置。強烈建議在此使用全局變數:輸入「$(#wx)」(不包含引號)。如果你還沒定義這個全局變數,那麼全局變數對話框會出現,在Base Path中,選擇你的wxWidgets安裝路徑。其他路徑可以不用填。
為你的項目選擇debug/release配置。推薦至少選擇debug配置。
選擇你的wxWidgets構建選項。必須和你構建wxWidgets時所使用的選項一致!如果你按照本文之前的方式構建的,應該將「wxWidgets Library Settings」下的全部三個選項選中。如果用的是wxPack,由於wxPack包含了各種不同的版本,所以你只需要選擇你需要的選項。這個頁面的另一個設置和wxWidgets的構建選項沒有關系,你可以按照喜好來選擇。如果,出於某種原因,你想使用調試版本的wxWidgets構建,選擇「Configure Advanced options」然後在下一頁選擇「Use __WXDEBUG__ and Debug wxWidgets lib」。
如果需要,選擇額外的庫。一般應用的話應該無須選擇其中任何一個。
構建並運行程序
接下來,就可以選擇「Build and run」(F9)對程序進行構建並運行了。如果順利,你的wxWidgets應用程序就會出現。如果出現了什麼問題,你可以參考後面的常見問題。

wxWidgets編譯選項簡介
BUILD
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」 目錄。
SHARED
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控制是構建一個單一的庫(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
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」目錄。
常見問題
出現類似於」wx/setup.h: No such file or directory」的錯誤
你在構建選項中缺少了很重要的編譯器搜索路徑。首先確認你是否在運行wxWidgets項目向導的時候正確選擇了wxWidgets的構建配置。如果重新運行向導並配置依然無效,那麼打開你的項目的構建選項並給編譯起的搜索路徑中添加」$(#wx.lib)\gcc_dll\mswu「(這里假設是一個單一的Unicode DLL構建)。

出現類似於」cannot find -lwxmsw28u」的錯誤
構建選項中的鏈接庫錯了。首先確認你是否在運行wxWidgets項目向導的時候正確選擇了wxWidgets的構建配置。如果重新運行向導並配置依然無效,確定你構建了什麼庫,並相應在構建選項中調整庫的名字。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
若要構建的程序能夠顯示中文,要對codeblocks進行一下設置,在edit(編輯)菜單裡面的文件編碼選擇UTF-8,否則編譯報錯。

熱點內容
服務密碼需要什麼證件 發布:2024-12-29 09:42:10 瀏覽:225
pc輔助存儲器構造 發布:2024-12-29 09:24:40 瀏覽:236
hadooplinux安裝 發布:2024-12-29 09:23:20 瀏覽:824
數控編程思維 發布:2024-12-29 09:21:45 瀏覽:306
php時間區 發布:2024-12-29 09:20:05 瀏覽:928
我的世界如何做出一個好的伺服器 發布:2024-12-29 09:18:45 瀏覽:943
哪裡買安卓二手機好 發布:2024-12-29 09:06:09 瀏覽:533
助威戰艦如何配置船長 發布:2024-12-29 09:05:37 瀏覽:736
如何觸發安卓小游戲 發布:2024-12-29 09:00:24 瀏覽:955
ftpcentos虛擬用戶 發布:2024-12-29 08:59:41 瀏覽:947