wx網羅系列之環境搭建:wxWidget的下載、安裝與編譯

來源:互聯網
上載者:User

此文轉載自北鬥星君的部落格,是他的Dev-Cpp/Mingw32 環境介紹系列教程中的幾章。他部落格地址為:http://blog.csdn.net/visioncat/  和 http://nirvana.cublog.cn/ 。此文為他高中時所寫。

第十四章 wxWidget的下載與安裝

  這一章我將為各位介紹如何下載安裝wxWidget這個GUI開發庫。
  首先,我們先要知道,我們是在win32下使用wxWidget的。所以,我們現在要下載的是wxMSW這個開發庫。MSW我想你也知道是什麼意思。直到這篇文章寫出來,wxMSW的最新版本是2.5.3。現在你可以從www.sf.net上下載,也可以在如下地址下載。http://umn.dl.sourceforge.net/sourceforge/wxwindows/wxMSW-2.5.3.zip。都是一樣的。我通常喜歡用umn.dl.sourceforge.net的下載。偏愛吧。還有,wsMSW-2.5.3.zip是一個免安裝的wx。而另一個wxMSW-2.5.3-setup.zip是需要安裝的。差別不是太打。如果問我,我比較喜歡wxMSW-2.5.3.zip。
  然後,我們就在你的磁碟機上建立一個目錄叫 wxWidget-2.5.3。並把壓縮包裡的檔案解壓到該目錄中。注意要全部解壓。當然如果你想少解一點(至少我全部都要)你可以解如下的檔案夾和檔案。不過注意,路徑不能更改。否則的話麻煩就大了。(也就是說原來的路徑是 build/msw/makefile.vc 你不能用makfile.vc替代)

build/msw/config.gcc
build/msw/makfile.gcc

include/
lib/
src/

還有一個contrib這個目錄其實並不是很重要。至少你在平時使用中不會很多的用它。如果需要你可以解開,但是通常只有在需要的時候才會編譯。

這樣我們的庫就算安裝好了。當然,如果你是Dev-Cpp的朋友。你可以按照我前面介紹的自訂工程,來設定工程的參數。這裡,我們在編譯器參數中加入

-I(安裝目錄)/include/

連接器參數加入

-L(安裝目錄)/lib/

好了,這章就到這裡了。

第十五章 wxWidget的編譯與用wxWidget編譯器

  現在我們用cmd.com進入build/msw。如果你按照我在第一章介紹的方式設定了。那麼輸入

make -f makefile.gcc

讓make來編譯器。在一陣狂編之後。我們就算安裝好了wxWidget。這是我們就進入demo/bombs/這個目錄,輸入

make -f makefile.gcc

就可以嘗試我們編譯的結果了。你可以將提示符出現的編譯參數作為連結參數和編譯參數給Mingw32使用編譯自己的工程。

編譯完成後,你會看到在bombs的gcc_debug目錄裡有一個檔案bombs。運行一下,一個掃地雷出現了。(我一直不會玩掃地雷,也許我的智商不高)。也許你會下意識的看看檔案的體積…… 哇!你會恐懼的發現這個程式要 12MB 那麼大……。你不用害怕,因為這個是調試用的庫。所以加入了大量的調試內容。12MB也是應當的。

  好了,現在我們來編譯一個小小的wxWidget庫。還是一樣,我們在編譯的時候要使用一個參數。我們在build/msw/下輸入

make -f makefile.gcc BUILD=release

好現在,我們就可以得到release的庫了。同樣,編譯一下bombs來看看。進入gcc_release目錄,程式一樣運行,但是體積卻小了N多。如果壓縮一下,程式還會更小都不滿1MB。

  但是,我們還要更小更小的庫。通常,現在網上絕大部分都介紹到上面第二種編譯方式,這已經相當不錯了。通常只有第一種。下面我就來介紹一下一個比較特別的編譯方式。

  如果各位用過MFC就會知道,其實MFC使用的是動態連結程式庫,這樣可以加大重複代碼的利用率。如果更新主程式就不需要更新動態庫的內容了。所以,我下面介紹如何把wxWidget編譯進動態連結程式庫中。
  同樣我們要進入build/msw/目錄。同樣用make。輸入

make -f makefile.gcc BUILD=release SHARED=1

首先注意大小寫,另外,release參數是必須的,否則就會產生那種可怕的恐龍檔案。但是缺點是不能對wxWidget進行調試。在一段時間的編譯後,我們就會在lib/gcc_dll中得到動態連結程式庫和庫檔案。如果你想長期使用,就把*.dll複製到 ~/system32/目錄中去好了。或者設定PATH值為該目錄。接下來我們就來編譯bombs測試。輸入

make -f makefile.gcc BUILD=release SHARED=1

這次我們會在gcc_dll目錄中找到bombs。如果直接運行,你會看到錯誤提示。當然如果你把動態連結程式庫複製到/system32/目錄中就不會看到了。我們把bombs.exe複製到lib/gcc_dll/目錄中,運行後,就會看到程式介面。不過……看看體積……我的天,100多KB。夠小了吧。我們就用這個開發wxWidget吧 ^_^

下面列出編譯器的參數和連接器的參數好讓各位建立自訂工程。

編譯器參數:
-O2  -DHAVE_W32API_H -D__WXMSW__    -I(wxWidgets)/include -I(wxWidgets)/lib/gcc_dll/msw -Wall -I. -DWXUSINGDLL -I(wxWidgets)/samples -DNOPCH

連接器參數:
-mthreads -L(wxWidgets)/lib/gcc_dll -Wl,--subsystem,windows -mwindows  -lwxmsw25_core  -lwxbase25   -lwxtiff -lwxjpeg -lwxpng -lwxzlib  -lwxregex -lwxexpat   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32

其中(wxWidgets)代表你安裝wxWidget的位置。

好了,這次的wxWidget之行就到這裡了。希望你能成功的走過第三步。

文外音:
其實,我早就喜歡用wxWidget了,只是產生的檔案實在嚇人。所以遲遲不敢再用。後來轉用gtk。不過我也研究到底怎麼樣把wxWidget體積縮小。所以,這次我徹底的縮小了檔案體積。真是一大幸事啊。不過,如果你在編譯的時候發現任何的問題。可以在我的Blog回應檔的後面提出,最好留下你的郵箱地址,這樣我就能以最快的速度回複你。同時希望你能關注我的文章。http://blog.csdn.net/visioncat/ 。當然本系列文章還沒有結束。還在補充中。因為前期很忙,所以幾個月沒有更新造成了有人誤認為我的文章結束了。哈,不好意思。

補充內容:
  從讀者的回複中,發現原來本文還是有些地方不很清楚。因此,在這裡做一個小小的補充。
  讀者提出,是否能給出一個更簡單的wxWidget的例子。所以,我在這裡給出一個簡單的makefile檔案和一個main.cpp檔案給各位。

#makefile.txt
#這個Makefile是針對使用Dll的wxWidget
#請將下面的wxPath的參數./改成你wxWidget的安裝目錄
wxPath=./

CF=-O2  -DHAVE_W32API_H -D__WXMSW__    -I$(wxPath)/include -I$(wxPath)/lib/gcc_dll/msw -Wall -I. -DWXUSINGDLL -I$(wxPath)/samples -DNOPCH

LF=-mthreads -L$(wxPath)/lib/gcc_dll -Wl,--subsystem,windows -mwindows  -lwxmsw25_core  -lwxbase25   -lwxtiff -lwxjpeg -lwxpng -lwxzlib  -lwxregex -lwxexpat   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32

#Makefile結束

//main.cpp
//這個檔案是使用Dll的wxWidget的主程式,是一個視窗(空白)

#include <wx/wx.h>

class MainApp:public wxApp
{
public:
 virtual bool OnInit(void);
private:
 wxFrame *mainFrame;
   
   
};

IMPLEMENT_APP(MainApp)

bool
MainApp::OnInit()
{
 mainFrame = new wxFrame((wxFrame*) NULL, -1, "wxWindows");
 mainFrame->Show(TRUE);
 
 return TRUE;
}

//main.cpp結束

 

好了,這次的補充到這裡就結束了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.