2 下载、安装wxWidgets

  这方面的资料从网络可以找到不少。wxWidgets的文档,要涵盖各种操作系统和编译环境,难免让人有点无所适从。这对初学者,是灾难。

  以下文字,适合于大部分初学者的工作环境。为能边看边做,请确认:(1)你用的是Windows操作系统(强烈建议初学者进阶后,适时开启Linux下开发的体验);(2)已经安装了Code::Blocks(版本不限,但也别太低了);(3)Code::Blocks使用gcc编译器,随Code::Blocks的安装已经装好。

2.1 下载wxWidgets

  wxWidgets的官网在http://www.wxwidgets.org/downloads/,下载页面是http://www.wxwidgets.org/downloads/

  作为Windows用户,从下载页面下载如下画圈的两个文件。Windows.ZIP是wxWidgets的源代码,Manual(HTML).zip则是在学习过程中最重要的参考(即前述的在线文档)。在4.2节中,将专门介绍在线文档的使用。

  

  下载后,将文件Windows.ZIP解压缩,下图是我解压缩后的结果,我将其解压到了F:/wxWidgets-3.0.0中。后文中,我将用X:/wxWidgets-3.0.0表示这个文件夹,X代表你选择的盘符。

  

2.2 为什么要自己编译wxWidgets

  一般的Windows应用程序,总是有一个安装程序(常常是setup.exe),只要运行这个程序,就可以将软件安装好。

  wxWidgets不是这样。下载得到的,不是能运行的程序,而是wxWidgets的源代码!开源软件提供给用户源代码,你可以直接阅读和修改。

  不少开源软件也提供安装程序,用户安装后就可以使用。这是适用于软件的使用者的方式,而不是针对开发者的方式。

  现在,你是开发者。作为开发者,常是下载源代码后,自己编译。这对于大众是高要求,但对专业人员,却是常用的套路。

  wxWidgets不是一般的应用程序,是为支持应用程序开发的平台。wxWidgets面对的是在不同操作系统(Linux、unix、Windows、Mac OS)下工作的开发人员,他们使用的C++编译器(GCC家族、MS家族、Borland家族及其他各种)形形色色、版本各异。wxWidgets不便于提供各种组合下的安装程序。开发人员下载源码,自己编译自己用。这种方式,创建的是最适合自己的环境。

  实际上,不这样做,往往得不到适合自己的开发环境。

  所以,下面的步骤或许会有点挑战性。但不要有牢骚。这样做一遍,你作为开发者的成色,就更足一些。

  实际上,wxWidgets中还提供了一个称为wxPack的编译好的版本,可以用于直接安装。在我的体验中,最新的wxPack使用的GCC版本低了,安装顺利,但却不能正确运行在我的开发环境中写的程序。这种方法,不推荐使用。

2.3 编译wxWidgets前的准备

  编译wxWidgets,要先准备好编译器,并且配置好运行编译器的“环境”。

  对于初学者,安装Code::Blocks时,选择带GCC编译器的安装文件进行安装。单独安装的GCC编译器,也可以在Code::Blocks中通过设置进行工作。

  总之先找到Code::Blocks所在的文件夹(后文中我用“X:\CodeBlocks\”代表,X:\CodeBlocks\要替换为你使用的实际文件夹名)。随Code::Blocks安装的GCC,在Code::Blocks安装文件夹的MinGW子文件夹中,打开X:\CodeBlocks\MinGW\bin,其中的文件,如下图所示,就是支持你的C++工作的GCC系列程序。

  

  记下这个文件夹名(简单办法,将路径复制下来,暂时粘贴到一个文本文件中备用)。下面要配置运行编译器的“环境”,确切地说,只需要设置“路径”(PATH)即可。

  在Win7中,鼠标右击桌面上的“计算机”图标,选菜单中的“属性”,接下来,就是如下图中从1到6的一系列操作,将“变量名”为PATH的“变量值”,在原有值的后面加一个英文的分号,再加入你记下的X:\CodeBlocks\MinGW\bin。注意,不要将原有的内容替换掉,而是追加你你需要的路径即可。

  

  其他版本的Windows,找到“系统属性”对话框的方式可能会稍有不同,最终的目标都是设置好PATH的值。

  还有别一种方式,直接用DOS命令做。有不少资料中讲这种做法,本文不做介绍。

2.4 编译wxWidgets

  编译wxWidgets的事情需要用命令行的方式完成。

2.4.1 用命令行编译wxWidgets

  从“开始”菜单->附件,运行“命令提示符”(有的系统称“MS-DOS方式”),在命令行下分别输入下面的命令:

命令

解释

X:(回车)

当前盘置为X,X是你解压缩wxWidgets用的盘符。

cd \wxWidgets-3.0.0\build\msw(回车)

当前目录置为/wxWidgets-3.0.0\build\msw,可以查看这个文件夹中的文件,msw是专供微软(ms)的Windows(w)用的编译需要的文件(注:wxWidgets的C++源代码在\wxWidgets-3.0.0\src中)。

gcc -v(回车)

这个命令并非必须,意在检查刚才的路径设置是否正确。下图的输出,表明在X:/wxWidgets-3.0.0\build\msw目录中,可以运行X:\CodeBlocks\MinGW\bin中的命令。还可以看到,当前使用的GCC版本是4.7.1。

  下图是我运行上表中的命令出现的结果:

  

  下面就可以要开始编译wxWidgets了。就在DOS提示符后面,输入下面的命令:

  1. mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug

  编译的过程会比较慢,会有几十分钟。干点别的,或者就看着屏幕上看不懂的提示发呆也好。理想情况是,顺利完成编译。

2.4.2 意外处理

  我在编译wxWidgets中,苦等几十分钟,等来了一个error,最后两行提示是:

  1. gcc_mswuddll\monodll_xh_bmpcbox.o: file not recognized: Memory exhausted
  2. collect2.exe: error: ld returned 1 exit status

  出现这种情况的,到http://blog.csdn.net/sxhelijian/article/details/25749505中的“问题1”,看原因解释以及对策。

2.4.3 多知道一点

  用上面的命令编译后,可以满足学习的需求了。如果还想体验,以及支持将来生产用于发布的程序版本,可以在SHARED和BUILD参数的选取上再做些组合。

  • SHARED的取值可以是1或0,代表产生的是动态链接库(1)和静态链接库(0)。两者的区别不解释,以后将明白,或者自行百度之。
  • BUILD的取值可以是debug或release,代表在应用程序开发时,产生的可执行文件是调试版本(debug)还是发布版本(release)。

  所以可以运行的命令还有3个:

  1. mingw32-make -f makefile.gcc  MONOLITHIC=1 SHARED=0 UNICODE=1 BUILD=debug
  2. mingw32-make -f makefile.gcc  MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
  3. mingw32-make -f makefile.gcc  MONOLITHIC=1 SHARED=0 UNICODE=1 BUILD=release

  关于这些参数的解释,参考http://blog.csdn.net/sxhelijian/article/details/25749505中的“问题2”部分。

http://blog.csdn.net/sxhelijian/article/details/26163791

wxWidgets初学者导引(2)——下载、安装wxWidgets的更多相关文章

  1. wxWidgets初学者导引(3)——wxWidgets应用程序初体验

    wxWidgets初学者导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith ...

  2. wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets

    wxWidgets刚開始学习的人导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxS ...

  3. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  4. wxWidgets刚開始学习的人导引(4)——wxWidgets学习资料及利用方法指导

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  5. wxWidgets刚開始学习的人导引(6)——wxWidgets学习材料清单

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  6. 安装wxWidgets遭遇的两大关卡

    早就想体验wxWidgets.这学期的C++课,课时还算充裕.关键是弟子们的实践能跟得上,我希望能让他们也浅尝一把GUI开发. MFC能够选.但既然IDE都用CodeBlocks了.还是选wxWidg ...

  7. Unity2017.x 版本的下载安装

    Unity2017 版本从2017年7月开始正式发布Unity2017.1版本,为了初学者更加清晰明了的掌握全过程,笔者还是以完整的共19个步骤来给大家演示下载与配置安装的全过程,方便广大读者的无障碍 ...

  8. go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE

    go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...

  9. Python下载安装及验证

      目录: 一.Python介绍 二.python安装及验证 一.Python介绍 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个 ...

随机推荐

  1. akka---Getting Started Tutorial (Java): First Chapter

    原文地址:http://doc.akka.io/docs/akka/2.0.2/intro/getting-started-first-java.html Introduction Welcome t ...

  2. UVA 11987 - Almost Union-Find

    第一次交TLE,说好的并查集昂. 好吧我改.求和.个数 在各个步骤独立算.. 还是TLE. 看来是方法太慢,就一个数组(fa),移动的话,移动跟结点要遍历一次 T T 嗯,那就多一个数组. 0.189 ...

  3. open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set

    0. demo 在拓扑学上,open set(开集)是对实数轴(real line)上开区间(open interval)的拓展. 红色圆盘:{(x,y)|x2+y2<r2},蓝色圆圈:{(x, ...

  4. Java RMI使用

    1. Java RMI介绍 RMI:远程方法调用(Remote Method Invocation).能够让在某个java虚拟机上的对象像调用本地对象方法一样调用另一个java 虚拟机中的对象上的方法 ...

  5. matplotlib学习之函数积分图

    # coding:utf-8 import numpy as np from matplotlib import pyplot as plt from matplotlib.patches impor ...

  6. windows go 安装

    go的安装很简单,下载go的msi文件 这里提供go1.9的msi下载链接 https://www.lanzous.com/i2gb54d 直接全部next就行,默认安装在了c盘的go 然后配置环境变 ...

  7. JavaScript的Math对象

    原文 简书原文:https://www.jianshu.com/p/8776ec9cfb58 大纲 前言 1.Math对象的值属性 2.Math对象的函数属性 3.Math对象的函数的使用 前言 Ma ...

  8. Chinese remainder theorem

    https://en.wikipedia.org/wiki/Chinese_remainder_theorem http://planetmath.org/ChineseRemainderTheore ...

  9. [Angular] Test component template

    Component: import { Component, Input, ChangeDetectionStrategy, EventEmitter, Output } from '@angular ...

  10. html js 上传图片 预览

    第一段代码是我自己修改之后能够多选显示多预览图,也就是加了个循环,后面的代码是一些解释说明之类的,抄的 <!DOCTYPE html> <html> <head> ...