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提示符后面,输入以下的命令:

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

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

2.4.2 意外处理

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

gcc_mswuddll\monodll_xh_bmpcbox.o: file not recognized: Memory exhausted
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个:

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

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

================= 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets的更多相关文章

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

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

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

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

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

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

  4. wxWidgets刚開始学习的人导引(1)——前言

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

  5. 刚開始学习的人制作VMOS场效应管小功放

    VMOS场效应管既有电子管的长处又有晶体管的长处,用它制作的功率放大器声音醇厚.甜美,动态范围大.频率响应好.因此近年来在音响设备中得到了广泛应用. 大功率的场效应管功率放大器.电.路比較复杂.制作和 ...

  6. 对于刚開始学习的人Xcode最经常使用的快捷键

    对于刚開始学习的人而言,好多人都是直接使用鼠标进行操作.差点儿非常少使用快捷键,从而再练习编程时比别人慢那么一点,今天就把刚開始学习的人最经常使用的几个快捷键给大家总结下,当然欢迎大家补充. (1)c ...

  7. 【React Native开发】React Native配置执行官方样例-刚開始学习的人的福音(8)

    ),React Native技术交流4群(458982758),请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  8. JavaScript 刚開始学习的人应知的 24 条最佳实践

    原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,认为不错就翻译了,翻译到 JSON.parse 那一节认为有点不正确路 ...

  9. oracle刚開始学习的人经常使用操作100问

    oracle刚開始学习的人经常使用操作100问 1. Oracle安装完毕后的初始口令?   internal/oracle sys/change_on_install system/manager ...

随机推荐

  1. List<int>是值类型还是引用类型

    class Program { static void Main(string[] args) { List<int> lst = new List<int>(); lst.A ...

  2. 迎接 Windows Azure 和 DNN 挑战,几分钟内快速构建网站!

    编辑人员注释:本文章由高级商务策划师兼开发平台推广者 Neeti Gupta 撰写. 曾几何时,构建一个简单的网站需要耗费好几个月的时间.在过去,.NET 开发人员和设计社区的一些成员使用 DNN(以 ...

  3. Struts2 使用通配符动态请求Action

    在以前的学习中,<action>元素的配置,都是用明确的配置,其name.class等属性都是一个明确的值.其实Struts2还支持class属性和method属性使用来自name属性的通 ...

  4. uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)

    Description In the ``Four Color Map Theorem" was proven with the assistance of a computer. This ...

  5. 垃圾回收算法简单介绍——JVM读书笔记&lt;二&gt;

    垃圾回收的过程主要包含两部分:找出已死去的对象.移除已死去的对象. 确定哪些对象存活有两种方式:引用计数算法.可达性分析算法. 方案一:引用计数算法 给对象中加入一个引用计数器.每当有一个地方引用它时 ...

  6. android混淆打包配置(忽略第三方jar)

    在project.properties里加上   proguard.config=proguard.cfg proguard.cfg 配置如下: -optimizationpasses 5-dontu ...

  7. mysql 存储过程的应用

    MySQL存储过程的创建   (1). 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程參数[,...]]) [特性 ...] 过程体 这里先举个样例: mysq ...

  8. bootstrap注意事项(二)

    1.内联子标题 在标题内还可以包含 <small> 标签或赋予 .small 类的元素,可以用来标记副标题. <!DOCTYPE html> <html> < ...

  9. HTML5实现坦克大战(一)

      Tank 字段 x:坦克的中心点的横坐标 y:坦克的中心点的纵坐标 dir:坦克的前进的方向 spped:坦克的速度 color:坦克的颜色,用于区分种类不同的坦克 bullet:坦克的子弹 为a ...

  10. Global.asax 文件说明

    引用 来自  http://www.cnblogs.com/jianshao810/archive/2011/02/03/1948912.htm 在网上找了N多相关的东西总说的不够细,现在终于找到了. ...