当前位置:求职简历网 > 知识 > 正文

wxwidgets

如何编译wxWidgets示例程序 wxWidgets wxWidgets是一个程序开发框架库, 允许你在Windows、Mac、Linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl

如何编译wxWidgets示例程序

wxWidgets
wxWidgets是一个程序开发框架/库, 允许你在Windows、Mac、Linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl、Ruby。

本教程中我将向你展示如何在基于Debian的linux中如Ubuntu和Linux Mint中编译wxwidgets 3.0+。
从源码编译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等等。
然而你的第一个程序只需要用一个文本编辑器来快速完成。
如下:
#includewx.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


如何编译wxWidgets

  1 、打开工程 wxWidgets-2.8.7\build\msw\wx_dll.dsw ,将其转换为 vs2005 工程关闭保存,再打开工程 wx_dll.sln 。
  2 、将解决方案配置更换为 DLL Unicode Debug 。
  3 、依次单独编译 wxregex 、 wxzlib 、 wxexpat 、 wxtiff 、 base 、 wxjpeg 、 wxpng 、 core 、 odbc 、 xml 、 adv 、 html 、 net 、 gl 、 dbgrid 、 qa 、 richtext 、 aui 、 xrc 、 media 库。
  其中目前版本 odbc 、 gl 、 dbgrid 工程并不完善,出现编译错误忽略即可。
  4 、如果以上顺利通过,那么将得到以下我们需要的库文件
  编译预定义环境
  wxWidgets-2.8.7\lib\vc_dll\mswud\wx\ setup.h
  wxWidgets-2.8.7\lib\vc_dll\mswud\wx\msw\ rcdefs.h
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_odbc_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_vc_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_gl_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext_vc_custom.dll
  w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc_vc_custom.dll
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud.lib
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net.lib
  wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml.lib
  wxWidgets-2.8.7\lib\vc_dll\wxexpatd.lib
  wxWidgets-2.8.7\lib\vc_dll\wxjpegd.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext.lib
  wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc.lib
  wxWidgets-2.8.7\lib\vc_dll\wxpngd.lib
  wxWidgets-2.8.7\lib\vc_dll\wxregexud.lib
  wxWidgets-2.8.7\lib\vc_dll\wxtiffd.lib
  wxWidgets-2.8.7\lib\vc_dll\wxzlibd.lib
  注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将 wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。
  为了以后开发方便,设定的开发库路径为:
  wxLib\include
  wxLib\Debug\mswud\wx\msw
  wxLib\Debug


Qt和wxWidgets哪个好

wxWidgets是开源的, qt不是开源的!从这个角度思考, 就像windows 和 linux 关系, 你觉得windows和linux谁好? 使用windows的人多,很大的原因是商业营销行为导致的. 我用wxWidgets有多年了,所以给你描述一下关于wxWidgets, 其他人少提及的东西.wxWidgets其实非常不错, 桌面应用完全能够胜任,效率非常高,内存以及cpu占用很可观,在windows下敢和MFC开发的软件比,在mac os下敢和object-c开发的软件比! 而且并不是说界面和控件的外观就被固定为操作系统本地化的外观, 你完全可以将界面或者控件元素做成任意样式和形状,实现不同平台UI风格的统一化,甚至可以制作多套皮肤,然后在win7,xp,mac下外观和用户体验一个样. 更主要的是,他的源代码是完全开放的. 高阶运用的时候完全可以将某个控件类继承下来, 由于他没有private属性,所以他里面的函数和变量你全都能继承下来,然后照着源代码进行修改和调整,最后变成自己针对性的控件. 反正, 在UI上没他办不到的. 另外,他的界面控件的类是完全指针安全的, 你随便new, 然后不用管, 用完了他自己会回收,完全不用delete,当然也别delete,不然麻烦了.其他的功能其实他都有提供,比如网络库,容器,OpenGL等等, 如果觉得不理想,比如数据库,可以用www.hnnedu.com xsqlite, 线程什么的可以用std的线程或者boost的线程,网络如果觉得他的事件机制反应慢, 可以用boost::asio. 社区不活跃,但是你要是在上面提问, 马上就会得到回应(即便是美国的深夜), 如果是bug, 会有人直接联系原作者,非常快的就进行改正,并邮寄通知你,然后发到svn上进行更新.不过主要是英语的响应快, 中文的几乎没人搭理.bug是存在的, 比较冷的功能和运用可能会有bug, 可以给官方提交,一般一天左右就可以得到响应, 如果不愿意, 反正有源代码, 跟踪一下, 继承下来改改就可以了,wxWidgets是开源的, 而且里面的函数和变量只用public和protected,没有用private, 换句话说, 就是源代码中的所有函数和变量都是可以获取和使用的. 不过,一般的运用是很难碰到bug的. 谁敢说qt没有bug? 遇到qt的bug你找他, 你是付费用户吗? 不过, 移动运用确实是他的短板.


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和qt哪个好用

跨平台的C++ GUI工具库很多,可是应用广泛的也就那么几个,Qt、wxWidgets便是其中的翘楚。
这里把GTK+排除在外,以C实现面向对象,上手相当困难,而且Windows平台下执行相当慢且不稳定。

Qt和wxWidgets各有各的优点,也各有各的缺点,各有各的适合应用点。
工作环境和爱好限制,个人曾经分别使用过Qt和wxWidgets,
到现在,就个人而言,选择在一般程序方向采用wxWidgets,在手机应用程序方向采用Qt。

先说版权:
Qt,是芬兰的TrollTech公司研发的,现在属于Nokia,一直奉行的是双LICENSE策略,一个是商业版,一个是免费版:
商业版的LICENSE就不说了,免费版的LICENSE,4.5版本之前一直采用GPL,意味着采用Qt的程序要么是商业软件,要么就是GPL软件,
这就造成了虽然出了个著名的KDE,可惜应用范围还是受限,否则的话,应用应该更广阔点;
不过还好,Nokia收购了之后意识到这个问题,4.5版本之后采用了LGPL,其他开发人员可以发布基于免费Qt库连接的商业软件了。
wxWidgets,一直奉行的是LGPL LICENSE。

再评评各自的优缺点:
Qt,一直以来开发公司作为商业公司进行运作,以客户需求为目标,提供了一系列完整的文档和RAD工具,并提供最为完整的平台支持;
对开发人员而言,Qt库本身,也是所有的GUI工具库中最为面向对象化的,同时也是最为稳定的。
罗列一下:
Qt的优点:
1. 支持的平台最多
2. 商业化支持
3. 完整的文档和RAD工具
4. 最为面向对象
5. 世界上最为成功的手机厂商支撑,对于移动终端的支持最为完善
Qt的缺点:
1. 使用的是非标准C++
2. 每个平台不是"Native GUI"
3. 过于庞大且运行缓慢
4. 与其它库不是很兼容(主要是STL之类的兼容问题)
5. 基本只能使用特定的qmake工具(其它工具经过良好的修改也可以,不过相当于重新编写一个qmake,是否值得)

wxWidgets,一直以来的LGPL发布,相当开放,积累了相当一部分研究用户,与现有各类工具库无缝连接地非常好;
同时可惜的是没有非常强大的正规商业化运作,可靠性、资源丰富性远比不上Qt。
还是罗列一下:
wxWidgets的优点:
1. 开放,对于各类第三方库的良好兼容(TAO工具中的Naming_Service Viewer就是采用wxWidgets的)
2. 支持各平台的"Native GUI"
3. 虽然有庞大的库,运行效果极为显著
4. 对各类现有工具的支持(笔者就采用MPC一站式产生所有项目的编译工程)
5. 偏MFC,对于Windows平台MFC程序的跨平台迁移,具有天然的优势
6. XRC,则提供了代码和设计分离的便利,程序员专注整体开发,UI设计群体则提供运行期界面、多语言版本支持功能等
wxWidgets的缺点:
1. 由于是偏MFC,则面向对象封装做得不是非常好
2. 相对缺乏的文档、资源
3. 缺乏很好的商业化支持,如果商业软件出问题需要支持,稍微麻烦点

总之:
在采用第三方工具库的复杂PC应用环境,有一定的底子,wxWidgets是不二的选择
在只需采用Qt单一工具库的应用环境,Qt是个不错的选择;特别是类似于手机这种嵌入式设备环境,由于Nokia的加入,Qt更值得一用。


怎样在linux下安装wxwidgets

wxWidgets是第三方库,那么要是用的话,首先要包含include 和 lib文件,然后在用的时候编译会出现一下问题:
wxWidgets/include/wx/platform.h:247: fatal error: wx/setup.h: No such file or directory
网上搜了一圈,有人说要编译库,不然引用不到。没办法,开始装呗
下载http://www.wxwidgets.org/downloads/ wxWidgets-2.9.2.tar.bz2
$tar -zxvf wxWidgets-2.9.2.tar.gz
$cd wxWidgets-2.9.2
$./configure -enable-unicode
$make
$sudo make install
看到如下信息,恭喜,成功了。
------------------------------------------------------

The installation of wxWidgets is finished. On certain
platforms (e.g. Linux) you'll now have to run ldconfig
if you installed a shared library and also modify the
LD_LIBRARY_PATH (or equivalent) environment variable.

wxWidgets comes with no guarantees and doesn't claim
to be suitable for any purpose.

Read the wxWindows Licence on licencing conditions.

------------------------------------------------------
清除中间文件:
$make clean


怎样在linux下安装wxwidgets

下载wxwidgets,将其放入linux服务器。
进入linux的控制台,执行安装命令
怎样在linux下安装wxwidgets
解压缩wxwidgets,命令为:tar -zxvf wxWidgets-2.8.9.tar.gz
进入文件目录:cd wxWidgets-2.8.9
顺序执行以下命令进行安装配置:
> ./configure --with-x11 > make > su [TYPE password root]> make install > ldconfig > exit
安装完毕,即可在开发软件项目时,使用wxWidgets了。


知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.