我的开发环境是eclipse3.3+cdt4.0+mingw3.4.2
先在www.eclipse.org上下载eclipse,然后通过更新来安装cdt4.0
然后到www.mingw.org下载mingw同时请下载gdb(如果找不到可以直接到sourceforge下载)用于调试
安装mingw后将mingw32-make.exe拷贝出来再改名为make.exe,然后剪切到原来的目录下,最后将这个路径加入到path路径中,保证系统能找到。
下面开始配置wxwidgets:
首先下载一个wxwidgets,现在最新版本的是2.8.4。然后编译wxwidgets
e:> cd wx2.8.4/build
e:/wx2.8.4/build> make SHARED=1 -fmakefile.gcc
其中SHARED=1是为了编译出dll来,将来作出来的程序就不会太大。如果不加这个选项,将来随便编译一个helloword就要20M。
大约一个小时以后可以编译完成,我们可以看到生成了一个库e:/wx2.8.4/lib/gcc_dll有二十几个a和dll文件,我们也将这个路径加入到path路径中
开发一个wxHello程序试一试
eclipse下新建c++ project wxHello
第一个文件wx_gch.h
#ifndef WX_GCH_H_
#define WX_GCH_H_
// basic wxWidgets headers
#include <wx/wxprec.h>
// for use xrc files
#include <wx/xrc/xmlres.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#endif /*WX_GCH_H_*/
第二个文件 HelloWorldApp.h
#ifndef HELLOWORLDAPP_H_
#define HELLOWORLDAPP_H_
class HelloWorldApp : public wxApp
{
public:
HelloWorldApp();
virtual ~HelloWorldApp();
virtual bool OnInit();
};
DECLARE_APP(HelloWorldApp)
#endif /*HELLOWORLDAPP_H_*/
第三个文件 HelloWorldApp.cpp
#include "wx_gch.h"
#include "HelloWorldApp.h"
IMPLEMENT_APP(HelloWorldApp)
HelloWorldApp::HelloWorldApp()
{
}
HelloWorldApp::~HelloWorldApp()
{
}
//wxMemoryDC dc; //必须构造wxMemoryDC对象以保证能够调试
bool HelloWorldApp::OnInit()
{
wxFrame *frame = new wxFrame((wxFrame*)NULL,-1,_T("Hello World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
frame->Show(true);
this->SetTopWindow(frame);
return true;
}
保存好后,开始编译预编译文件wx_gch.h.gch
cd wxHello
g++ -mthreads -g3 -DHAVE_W32API_H -D__WXMSW__ -D__WXDEBUG__ -DWXUSINGDLL -DWX_PRECOMP -Ie:/wx2.8.4/include -Ie:/wx2.8.4/lib/gcc_dll/mswd wx_gch.h
这段命令生成了wx_gch.h.gch有50多M。
生成了这个文件以后在其他工程中都可以应用的。
预编译文件的作用是提高了其他依赖于wx_gch.h文件的文件的编译速度。
接着配置工程选项。
编译选现:
首先是预处理选项HAVE_W32API_H __WXMSW__ __WXDEBUG__ WXUSINGDLL WX_PRECOMP
然后是头文件路径 e:/wx2.8.4/include e:/wx2.8.4/lib/gcc_dll/mswd
调试级别 g3
其余杂项 -mthreads
连接选项:
连接库 wxbase28d wxmswd_core
库文件地址 e:/wx2.8.4/lib/gcc_dll
其余杂项 -mthreads,--subsystem,windows -mwindows
保存以后添加一个make target名字all 目标all
双击all,eclipse将会编译和连接wxHello
生成的wxHello大约60多k
如果需要调试就必须打开
//wxMemoryDC dc; //必须构造wxMemoryDC对象以保证能够调试
这一行的注释。
至于为什么?我也想知道,这个只是我调试出来的结果。
欢迎大家批评指正我的不足之处。
先在www.eclipse.org上下载eclipse,然后通过更新来安装cdt4.0
然后到www.mingw.org下载mingw同时请下载gdb(如果找不到可以直接到sourceforge下载)用于调试
安装mingw后将mingw32-make.exe拷贝出来再改名为make.exe,然后剪切到原来的目录下,最后将这个路径加入到path路径中,保证系统能找到。
下面开始配置wxwidgets:
首先下载一个wxwidgets,现在最新版本的是2.8.4。然后编译wxwidgets
e:> cd wx2.8.4/build
e:/wx2.8.4/build> make SHARED=1 -fmakefile.gcc
其中SHARED=1是为了编译出dll来,将来作出来的程序就不会太大。如果不加这个选项,将来随便编译一个helloword就要20M。
大约一个小时以后可以编译完成,我们可以看到生成了一个库e:/wx2.8.4/lib/gcc_dll有二十几个a和dll文件,我们也将这个路径加入到path路径中
开发一个wxHello程序试一试
eclipse下新建c++ project wxHello
第一个文件wx_gch.h
#ifndef WX_GCH_H_
#define WX_GCH_H_
// basic wxWidgets headers
#include <wx/wxprec.h>
// for use xrc files
#include <wx/xrc/xmlres.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#endif /*WX_GCH_H_*/
第二个文件 HelloWorldApp.h
#ifndef HELLOWORLDAPP_H_
#define HELLOWORLDAPP_H_
class HelloWorldApp : public wxApp
{
public:
HelloWorldApp();
virtual ~HelloWorldApp();
virtual bool OnInit();
};
DECLARE_APP(HelloWorldApp)
#endif /*HELLOWORLDAPP_H_*/
第三个文件 HelloWorldApp.cpp
#include "wx_gch.h"
#include "HelloWorldApp.h"
IMPLEMENT_APP(HelloWorldApp)
HelloWorldApp::HelloWorldApp()
{
}
HelloWorldApp::~HelloWorldApp()
{
}
//wxMemoryDC dc; //必须构造wxMemoryDC对象以保证能够调试
bool HelloWorldApp::OnInit()
{
wxFrame *frame = new wxFrame((wxFrame*)NULL,-1,_T("Hello World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
frame->Show(true);
this->SetTopWindow(frame);
return true;
}
保存好后,开始编译预编译文件wx_gch.h.gch
cd wxHello
g++ -mthreads -g3 -DHAVE_W32API_H -D__WXMSW__ -D__WXDEBUG__ -DWXUSINGDLL -DWX_PRECOMP -Ie:/wx2.8.4/include -Ie:/wx2.8.4/lib/gcc_dll/mswd wx_gch.h
这段命令生成了wx_gch.h.gch有50多M。
生成了这个文件以后在其他工程中都可以应用的。
预编译文件的作用是提高了其他依赖于wx_gch.h文件的文件的编译速度。
接着配置工程选项。
编译选现:
首先是预处理选项HAVE_W32API_H __WXMSW__ __WXDEBUG__ WXUSINGDLL WX_PRECOMP
然后是头文件路径 e:/wx2.8.4/include e:/wx2.8.4/lib/gcc_dll/mswd
调试级别 g3
其余杂项 -mthreads
连接选项:
连接库 wxbase28d wxmswd_core
库文件地址 e:/wx2.8.4/lib/gcc_dll
其余杂项 -mthreads,--subsystem,windows -mwindows
保存以后添加一个make target名字all 目标all
双击all,eclipse将会编译和连接wxHello
生成的wxHello大约60多k
如果需要调试就必须打开
//wxMemoryDC dc; //必须构造wxMemoryDC对象以保证能够调试
这一行的注释。
至于为什么?我也想知道,这个只是我调试出来的结果。
欢迎大家批评指正我的不足之处。