Dev-C++ & MinGW & wxWindows2.6.2 開發環境的配置

來源:互聯網
上載者:User
             最近對wxWidgets產生了興趣,想用用這個東西.  本來用VC6環境來對wxWindows進行配置,是最簡單不過的了. 但我想到這個東東既然是可以在Linux下run的東西, 還是用MinGW下來使用他吧. 乘這個機會也學點gcc的使用.  經過一兩天的摸索, 總算搞定.         一. 準備工作              wxWidgets2.6.2: 可以到www.wxWindows.org下載. 建議下載所有平台版(All ports combined )的.這樣在linux下也可以編譯使用.              MinGW(5.02): 我下載的是一個網路安裝版的. 使用網路安裝版時建議下載所有組件(花不了多少時間,看了下就9個包左右).              MYSYS1.0.11: Windows下一個仿Linux環境, 在編譯wxWidgets時需要它.                  以上兩個包最新的可以到 sourceforge.net 上去查詢. 下面是我用的.      MinGW: http://umn.dl.sourceforge.net/sourceforge/mingw/MinGW-5.0.2.exeMYSYS: http://superb.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.11-2004.04.30-1.exe              Dev-C++: 我使用的是最新的4.9.9.2版本. (按:用了這麼多的IDE,發現還是MS 的Visual Stdio系列的IDE最好用. 雖然有很多開源的IDE,但大多使用起來不是太方便,Dev-C++算用起來比較順手的一個. 另外 MinGW Developer Studio也不錯. 難怪在Linux下眾多高人們還是情願使用VIM和Emacs.)        二. 安裝              分別安裝MinGW,MYSYS,Dev-C++到系統上. 安裝時一路下一步就OK了. 另外在安裝Dev-C++時值得提請注意的是,它會提示是否要跟系統的.c,.cpp等檔案相關. 如果你不想這樣,最好去掉這些選項.          三. 編譯wxWidgets              先將wxWidgets解壓縮到硬碟上.我機器上為d:/wx. 運行mysys,進入wx目錄( cd /d/wx ).              建立兩個目錄build_d,build_r分別用來編譯Debug版的庫和發布版的庫. 先建立Debug版的庫.                cd build_d                回合組態命令:               ../configure --with-msw --enable-debug --enable-debug_gdb --disable-shared --enable-monolithic                 (說明: --with-msw 表示編譯ms window的版本, --enable-debug 和 --enable-debug_gdb 標準表示配置debug版的庫. --disable-shared 將編譯靜態庫. wxWidgets的作者建議使用靜態庫,這樣在將來的應用程式升級時就方便些,因為不用在重複發布那麼多的dll了. --enable-monolithic將把wxWidgets的核心庫編譯到一個庫檔案. 這樣做的好處時就是比較省事)               等配置完成後,就可以運行                make                進行編譯了. 編譯時間跟你機器效能相關.                編譯完成後,運行                make install                可以把已經裝好的庫安裝到mysys的環境中.這一步在windows下並不一定要做.因為我們並不一定會在mysys下來開發.                 在運行make install 後,為了驗證安裝是否成功,可以編譯一下wx內建的sample來看看.               (當前路徑為/d/wx/build_d)                cd sample/minimal                make                 如果編譯成功, 則表示安裝完成了. 可以運行                ./minial.exe                  看看效果                 在這裡我建議建立一個目錄,把庫都拷貝出去,方便以後搭建dev-C++的環境. 下面是我的操作.                 (當前路徑為 /d/wx/build_d)                 mkdir /d/wxlib                 cp -R -u lib /d/wxlib                將庫檔案拷貝出去備份.                  接下來是編譯Release版.                 (當前路徑為/d/wx/build_d)                 cd ../build_r                 ../configure --with-msw --disable-shared --enable-monolithic                 (此處去得了debug標誌,則預設按Release版編譯)                 make                 cp -R -u lib /d/wxlib           四. 配置Dev-C++            假設Dev-C++的安裝目錄為 d:/dev-cpp. 在 d:/dev-cpp/lib下建立一個目錄 wx. 將我們備份目錄(d:/wxlib)下所有的.a檔案拷貝到這個目錄下.  將wxWidgets解壓縮目錄下include目錄下的wx檔案夾全部拷貝到d:/dev-cpp/include下. 同時將d:/wxlib/wx/include下msw-ansi-debug-static-2.6 目錄 和 msw-ansi-release-static-2.6 目錄拷貝到 d:/dev-cpp/include/wx目錄下.               下面我們要自己編輯一個wx專用的setup.h檔案. 在d:/dev-cpp/include/wx下產生一個setup.h檔案. 內容編輯如下: #ifndef _SETUP_H_
#define _SETUP_H_ #      ifdef __WXDEBUG__
#              include "./msw-ansi-debug-static-2.6/wx/setup.h"
#      else
#              include "./msw-ansi-release-static-2.6/wx/setup.h"
#      endif #endif           五. 編輯dev-c++的工程模版檔案.           因為dev-c++目前不支援像MinGW Devoleper Studio那樣可以配置Debug和Release模式,所以我們編輯兩套模版. 一套用於Debug版,一套用於Release版.            在dev-c++的安裝目錄下建立三個檔案: wxWindow_Debug.template,wxWindow_Release.template, StdPrec.h(這是用來作先行編譯的標頭檔)分別編輯檔案如下wxWindow_Debug.template[Template]
ver=1
Name=wxWindows-Debug
Icon=wxWindow.ico
Description=wxWidgets development[Debug]
Catagory=GUI [Unit0]
CppName=StdPrec.h
Cpp=StdPrec.h [Project]
UnitCount=1
Type=0
Name=wxWindowCppCompiler=-D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -DSTRICT -D__WXMSW__ -D__WINDOWS__ -D__WXDEBUG__ -fpch-deps -g
Linker=-pipe  -Wl,--subsystem,windows -mwindows -lwx_mswd-2.6 -lwxregexd-2.6 -lwxpngd-2.6 -lwxjpegd-2.6 -lwxzlibd-2.6 -lwxtiffd-2.6 -lstdc++ -lgcc -lodbc32 -lwsock32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 -lodbc32 -lwsock32 -lopengl32 -lglu32 -lole32 -loleaut32 -luuid (wxWindow.ico可以在wxWindow的解壓縮目錄下的Sample目錄獲得,然後拷貝到 template目錄下即可)wxWindow_Release.template[Template]
ver=1
Name=wxWindows-Release
Icon=wxWindow.ico
Description=wxWidgets development[Release]
Catagory=GUI [Project]
UnitCount=0
Type=0
Name=wxWindowCppCompiler=-D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -DSTRICT -D__WXMSW__ -D__WINDOWS__ -fpch-deps
Linker=-pipe  -Wl,--subsystem,windows -mwindows -lwx_msw-2.6 -lwxregex-2.6 -lwxpng-2.6 -lwxjpeg-2.6 -lwxzlib-2.6 -lwxtiff-2.6 -lstdc++ -lgcc -lodbc32 -lwsock32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 -lodbc32 -lwsock32 -lopengl32 -lglu32 -lole32 -loleaut32 -luuid StdPrec.h#ifndef _STDPREC_H_INCLUDE
#define _STDPREC_H_INCLUDE#include "wx/wxprec.h"#ifdef __BORLANDC__
    #pragma hdrstop
#endif// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWidgets headers)
#ifndef WX_PRECOMP
    #include "wx/wx.h"
#endif#endif //_STDPREC_H_INCLUDE                                          上面的兩個模版中, Debug模式的模版會在工程建立時產生一個StdPrec.h的先行編譯標頭檔, 而在Release模式下則只會產生一個空工程.這主要是考慮到我們在開發時首先會用使用Debug模式開發,等調試完成後,我們在建立一個Release工程,然後將所有的程式檔案加入到這個建立的工程中就可以了.        現在啟動 dev-c++(我使用的是中文環境), 在工具-編譯選項中,選擇 "庫" 選項卡,將wx庫的路徑加入到庫搜尋路徑中. 我機器為 d:/dev-cpp/lib/wx.                  現在我們可以開始實驗了.        我們建立一個測試目錄. d:/sample/wx       選"建立"->"工程",在出現的對話方塊中選擇"GUI"這一頁.選擇wxWindow-Debug. 如果喜歡可以自己取一個工程名.這裡就預設"工程1". 點擊確定.提示儲存工程檔案,將此檔案儲存到我們建的工程目錄下. d:/sample/wx.然後我們將建立一個main.cpp檔案加入到工程中.輸入如下代碼:(這段代碼是從wx內建的sample/minimal例子中摘下來的)#include "StdPrec.h" class MyApp : public wxApp
{
public:
    virtual bool OnInit();
}; class MyFrame : public wxFrame
{
public:
    MyFrame(const wxString& title);    void OnQuit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);private:
    DECLARE_EVENT_TABLE()
};enum
{
    Minimal_Quit = wxID_EXIT,    Minimal_About = wxID_ABOUT
}; BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)
    EVT_MENU(Minimal_About, MyFrame::OnAbout)
END_EVENT_TABLE() IMPLEMENT_APP(MyApp) bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame(_T("Minimal wxWidgets App"));    frame->Show(true);    return true;
} MyFrame::MyFrame(const wxString& title)
       : wxFrame(NULL, wxID_ANY, title)
{#if wxUSE_MENUS
    wxMenu *fileMenu = new wxMenu;    wxMenu *helpMenu = new wxMenu;
    helpMenu->Append(Minimal_About, _T("&About.../tF1"), _T("Show about dialog"));    fileMenu->Append(Minimal_Quit, _T("E&xit/tAlt-X"), _T("Quit this program"));    wxMenuBar *menuBar = new wxMenuBar();
    menuBar->Append(fileMenu, _T("&File"));
    menuBar->Append(helpMenu, _T("&Help"));    SetMenuBar(menuBar);
#endif // wxUSE_MENUS#if wxUSE_STATUSBAR
    CreateStatusBar(2);
    SetStatusText(_T("Welcome to wxWidgets!"));
#endif // wxUSE_STATUSBAR
}void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(true);
}void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
    wxString msg;
    msg.Printf( _T("This is the About dialog of the minimal sample./n")
                _T("Welcome to %s"), wxVERSION_STRING);    wxMessageBox(msg, _T("About Minimal"), wxOK | wxICON_INFORMATION, this);
}     儲存這個main.cpp檔案, 進行編譯. 如果你在link時出現錯誤, 則有可能是dev-C++ 內建的lib庫有問題. 我就遇見了這種情況. 讓我鬱悶了好半天.解決的辦法很簡單, 將MinGW5.0.2的庫檔案覆蓋dev-c++內建的庫檔案即可.即是將d:/MinGW/Lib下所有檔案包括子目錄覆蓋 d:/dev-cpp/Lib目錄. 此時再編譯, 就OK了.

作者郵箱: lizw2006@126.com 歡迎來信討論和指正.

          
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.