zoukankan      html  css  js  c++  java
  • (转)Eclipse+WxWidgets开发环境搭建

    Eclipse+WxWidgets开发环境搭配

    一直在寻找一个方便使用的C++GUI库。今天终于把WxWidgets搞定。

    大致的步骤是四步:
    第一步,Eclipse及CDT的安装
    第二步,MinGW及编译器的安装配置
    第三步,wxWidget的下载及编译
    第四步,Eclipse下有关wxWidget的配置

    搞定wxWidget的配置、开始编写像样的windows程序

    ----Richard Lee 回味


    看了网上的绝大部分文章,多半解决不了什么问题,还有可能误入歧途,浪费更多的时间在前期这准备工作上。
    所以,把这些配置的详细步骤写出来,希望能为后来者指点迷津,切莫再花时间再环境的搭建上了。
    大致的步骤是四步:

    第一步,Eclipse及CDT的安装
    第二步,MinGW及编译器的安装配置
    第三步,wxWidget的下载及编译
    第四步,Eclipse下有关wxWidget的配置

    经过这四步相信你就应该可以正常调试你的窗口程序了。
    ok,我们开始。

    第一步 Eclipse及CDT的安装
    这步其实没啥说的,是最简单的一步,用过eclipse及安装过插件的人都应该很快搞定。
    下载Eclipse最新版本,到我写这篇文章时应该是3.2版,由 http://www.eclipse.org 下载,当然首先你要先下载JDK并正确安装和注册环境变量path(将你的jre的bin目录路径cut到path里),再启动Eclipse 应该看到正常启动画面。
    再到eclipse的网站上找到CDT,下载它,当然你应该选择最近的版本下载。
    下载后,进行解压,并直接将解压后得到的诸多文件及文件夹 Copy到Eclipse原目录下。重新启动Eclipse,这时再新建工程,你应该能见到 C/C++工程这项了。
    到这里,你的CDT算是安装成功了。

    第二步 MinGW及编译器的安装配置
    这部分主要是MinGW的下载及安装配置。
    由于单独的Eclipse + CDT 是不能完成C++工程开发的,因为至少还缺少编译器及基础类库,这里我们选择MinGW工具,你需要到 http://www.MinGW.org 上去下载最新版本的MinGW。
    到目前为止,最新版本是5.0.2版,你从它网站上直接download下来的应该是一个100多k的下载端软件,还需要继续下载全部内容,运行该下载文件后,按要求逐步推进,如果你是下载压缩包,即只下载需要的部分,那么你选择下载以下这几部分
    • gcc-g++-3.4.2-20040916-1.tar.gz
    • gcc-core-3.4.2-20040916-1.tar.gz
    • mingw32-make-3.80.0-3.tar.gz
    • mingw-runtime-3.9.tar.gz
    • mingw32-make-3.80.0-3.tar.gz
    • binutils-2.15.91-20040904-1.tar.gz
    • w32api-3.6.tar.gz
    下 载完成后,首先将他们拷贝到同一目录下,并将它们解压在同一目录下面(例如我的mingw安装目录是c:\mingw,那么需要将这7个压缩文件全部直接 在c:\mingw解压)。然后设置环境变量确保在PATH环境变量中包含"d:\mingw\bin",最后可以打开DOS控制台输入gcc来验证环境 变量是否设置正确。如果你的DOS控制台显示“no input file”等相关信息,那么你这一步也算完成了。
    第三步,wxWidget的下载及编译
    wxWidget由 http://www.wxWidgets.org 下载并安装,目录自选。
    安装好后,直接进入你wxWidgets的安装目录 (举例:c:\wxWidgets-2.8.0\build\msw)中,在这里执行命令
    mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1

    通过makefile.gcc 这个文件将整个项目编译好,你会等很久大约半个多小时,编译后目录涨到800多M,因为一部分是.o的中间文件,
    可以删除。

    编译后你会在安装目录的(c:\wxWidgets-2.8.0\lib\gcc_lib)下看到一堆扩展名为 .a 的Archive文件(windows下的库文件为.lib
    linux下为 .a)和几个目录,类似mswu,mswud。
    第三步完成。

    第四步,Eclipse下有关wxWidgets的配置

    首先启动你的Eclipse并建立一个Managed C++ Project。创建完成后右键该项目并选择"Properties"属性对话框在其中选择“C/C++ Build"选项。
    在C/C++Build选项界面中,选择“Configuration Settings”的"Tool Settings“。
    在Tool Settings中选择"GCC C++ Compiler"->"Preprocessor",
    在Defined symbols列表中加入:__WXMSW__ (注意,两侧都是双下划线), __WXDEBUG___UNICODE(此处是单下划线,
    因为你的wxWidgets是用unicode编码编译的,所以此处一定要设置该宏,不然在编译时会收到大量"undefined reference")。
    接下来你需要选择Directories项并添加include及lib目录,在这里你需要添加
    "C:\wxWidgets-2.8.0\lib\gcc_lib\mswud"
    "C:\wxWidgets-2.8.0\lib\gcc_lib\mswu"
    "C:\wxWidgets-2.8.0\include"
    "C:\wxWidgets-2.8.0\contrib\include"
    这四个目录进Directories。
    接下来在下面的 Miscellaneous 选项中的Other Flags中输入以下这句

    -c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing

    接下来点选到 "GCC C++ Linker" 部分。在这部分,首先选择"Libraries"并在右侧的Libraries栏中按顺序键入以下库名:

    wxmsw28ud_xrc,wxmsw28ud_richtext, wxbase28ud_net, wxmsw28ud_dbgrid, wxbase28ud_odbc,wxmsw28ud_media, wxmsw28ud_aui, wxmsw28ud_html, wxmsw28ud_adv,wxbase28ud_xml, wxmsw28ud_core, wxbase28ud, wxtiffd, wxjpegd, wxpngd,wxzlibd, wxregexud, wxexpatd, kernel32, user32, gdi32, comdlg32,winspool, winmm, shell32, comctl32, ole32, oleaut32, uuid, rpcrt4,advapi32, wsock32, odbc32

    库名全部加入后在下面一栏的"Library search path (-L)"中加入以下目录

    "C:/wxWidgets-2.8.0/lib/gcc_lib"

    "C:/wxWidgets-2.8.0/lib"

    添加完成后,选择该部分中的"Miscellaneous"项,并在"Linker flags"中键入

    -Wl,--subsystem,windows -mwindows

    此时,点击应用。

    再切换到"Build Settings"标签页,勾掉"Build Command"中的,"Use default command"前的勾儿,并将命令 make 改为

    mingw32-make -fmakefile

    最终,点击"OK"使设置生效。

    到这里,你可以把wxwidgets中的samples拿来试一试了,把代码Copy进你的工程,编译运行一下,看看结果。

    我想,你应该成功了。。。。

    下面是第一个WxWidgets程序的代码:

    #include "wx/wx.h"
    using namespace std;
    class MyApp:public wxApp
    {
        public:
        vrtual bool OnInit();
    };
    class MyFrame:public wxFrame
    {
    public:
        MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) ;

        void OnQuit(wxCommandEvent& event);
        void OnAbout(wxCommandEvent& event);

        DECLARE_EVENT_TABLE()
    };
    enum
    {
        ID_Quit = 1,
        ID_About,
    };

    BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(ID_Quit, MyFrame::OnQuit)
    EVT_MENU(ID_About, MyFrame::OnAbout)
    END_EVENT_TABLE()

    IMPLEMENT_APP(MyApp)

    bool MyApp::OnInit()
    {
        MyFrame *frame = new MyFrame( wxT("Hello World"), wxPoint(50,50), wxSize(450,340) ) ;
        frame->Show(TRUE);
        SetTopWindow(frame);
        return TRUE;
    }

    MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
                : wxFrame((wxFrame *)NULL, -1, title, pos, size)
    {
        wxMenu *menuFile = new wxMenu;

        menuFile->Append( ID_About, wxT("&About...") ) ;
        menuFile->AppendSeparator();
        menuFile->Append( ID_Quit, wxT("E&xit") ) ;

        wxMenuBar *menuBar = new wxMenuBar;
        menuBar->Append( menuFile, wxT("&File") ) ;

        SetMenuBar( menuBar ) ;

        CreateStatusBar();
        SetStatusText( wxT("Welcome to wxWindows!") ) ;
    }

    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
    {
        Close(TRUE);
    }

    void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
    {
        wxMessageBox(wxT("This is a wxWindows Hello world sample"),
        wxT("About Hello World"), wxOK | wxICON_INFORMATION, this) ;
    }


    注:
       编译wxWigets时候mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1
       
    SHARED = 0 表示 静态编译;SHARED =1 表示动态编译
        USE_ODBC=1 是默认的(可设置为0)    :使用ODBC数据库
        USE_GL = 1 是默认的
    (可设置为0)       :使用OpenGL库
        详细编译选项见<wx/setup.h>

        如果采用动态编译,
    Defined symbols预定义?)中必须定义WXUSINGDLL,如果为Debug版本还得添加MinGW的运行时库mingwm10.dll。

        上面提到的:如果编译Debug版本,需要定义
    __WXDEBUG__;Release版本则不需要。

  • 相关阅读:
    python3.x学习笔记2018-02-05更新
    网络安全学习资源整理2018-02-02更新
    隔行变色效果
    自制滚动条
    关于ico图标
    CSS实现标题/段落省略效果的三剑客
    第三章(循环) 编程题 2
    第三章(循环) 编程题
    python基础03--基本数据类型(字符串)
    python基础02--运算符与基本数据类型(数字)
  • 原文地址:https://www.cnblogs.com/shengshuai/p/1446894.html
Copyright © 2011-2022 走看看