wxWidgets 在 Windows 下开发环境配置
本文基于 CodeBlocks (16.01) 和 wxWidgets (3.0.2) 搭建 Windows 环境下 GUI 开发环境。
1. CodeBlocks 官网,下载最新版安装包 codeblocks-16.01mingw-setup.exe
此版本包含GCC,GDB,官网介绍为: NOTE: The codeblocks-16.01mingw-setup.exe file includes additionally the GCC/G++ compiler and GDB debugger from TDM-GCC (version 4.9.2, 32 bit, SJLJ).
我的安装目录: C:\Program Files (x86)\CodeBlocks, 后续编译要用到 CodeBlocks 内含的编译器,故将 C:\Program Files (x86)\CodeBlocks\MinGW\bin 添加到环境变量 Path。
2. wxWidgets 官网,下载源码包,各文档介绍如下图,

3. 解压缩 wxMSW-3.0.2.7z 到 C:\wxMSW-3.0.2, 在该目录下,新建 bat 文件 wxBuild_ver.0.1.bat, 内容如下,
@echo off
cd build/msw
title Compile wxWidgets
echo Start Compile ...
echo ---------------------------------------------------------------------
::echo Clean Env
::mingw32-make -f makefile.gcc clean
echo Compile Release Version
:: SHARED=0, Static Link Library. SHARED=1, Dynamic Link Library.
:: MONOLITHIC=0, Multiple Widgets. MONOLITHIC=1, Single Widgets.
:: UNICODE=0, Not Support Unicode. Unicode=1, Support Unicode.
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1
echo Compile Debug Version
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1
echo ---------------------------------------------------------------------
echo Compile Succeed.
pause
执行该文件,即可完成编译。 (各编译选项的详细解释,见本文最后的附录)
注意:
对于 wxWidgets 3.0.2 + CodeBlocks 16.02 (GCC 4.9.2) 的编译,在编译过程中遇到 C++ 2011 的兼容性问题, wxWidgets 官方给的解决方案在这里。
4. CodeBlocks 环境设置
打开 CodeBlocks, Settings -> Global variables... , 添加 wx 变量和路径如下图,

5. wx GUI 工程 demo
默认工程的运行结果如下,
至此,环境搭好了。
6. 最后的问题。
基于 MinGW-GCC 编译的程序,要依赖相关的 .dll 库运行,所以,把生成的 exe 文件拷贝到其它电脑,将出现以下错误,
解决方法,右键点击工程,选择 Build options,
分别将 Debug 和 Release 的 Linker settings 标签下的 Other Linker options 下添加 -static 链接选项。
重新编译工程。这样生成的 exe 即可脱离开发环境运行。
附录. 各编译选项的解释
BUILD 控制 wxWidgets 构建调试版本 (BUILD=debug)或者是发布版本(BUILD=release)。
- debug 构建 wxWidgets 会创建带有 ”d” 后缀的库,例如 ”libwxmsw28d.a”、”wxmsw28d_gcc_custom.dll”。
- debug 构建 wxWidgets 会在 wxWidgets 库的输出目录中创建 ”mswd” 或者 “mswud” 目录。
- release 构建 wxWidgets 创建的库没有 ”d” 后缀,例如 ”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。
- release 构建 wxWidgets 会在 wxWidgets 库的输出目录中创建 ”msw” 或者 “mswu” 目录。
SHARED 控制 wxWidgets 是构建 DLL(SHARED=1) 还是静态库 (SHARED=0)。利用构建的 DLL,主程序构建时间较快,可执行文件更小。但是可执行文件加上 wxWidgets DLL 的总大小更大,但是不同的可执行文件可以使用同一个DLL。
- wxWidgets 的 DLL 构建会创建导入库(如 libwxmsw28.a)以及 DLL 文件(如 wxmsw28_gcc_custom.dll)。你必须在发布你的程序的时候包含这个DLL。
- wxWidgets 的静态构建只会创建静态库(如 libwxmsw28.a),发布的时候也无须包含 wxWidgets 的DLL。
MONOLITHIC 控制是构建一个单一的库 (MONOLITHIC=1)还是多个组件库(MONOLITHIC=0)。使用单一构建,项目的设置和开发会更加简单,如果你同时使用 DLL 构建的话, 你只需要分发一个 DLL 文件。如果使用非单一构建(multilib),会构建出多个不同的库同时你可以避免将整个 wxWidgets 的基本代码链接到主程序,就可以去掉不需要的库。同时你也必须确保你选择了正确的组件库 (建立工程的时候有个库组件选项)。
- wxWidgets 的单一构建仅会创建一个 wxWidgets 导入库(如 libwxmsw28.a)以及一个 DLL(如 wxmsw28_gcc_custom.dll)。
- wxWidgets 的多库(multilib)构建会创建多个导入库(libwx28_base.a等)以及多个 DLL 文件。
- 无论何种 wxWidgets 构建,都会创建额外的静态库(如 libwxexpat.a、libwxjpeg.a 等)。这些库对于 wxWidgets 的 DLL 构建一般是不需要的,但是当使用静态构建的时候,则是必须的。
UNICODE 控制 wxWidgets 以及你的程序是否使用支持 Unicode 的宽字符串。大多数 Windows 2000 或更高系统上的应用程序都应该支持 Unicode。早期的Windows 版本不一定有 Unicode 支持。你应该总是使用 wxWidgets 的 _("string") 和 _T("string") 宏来确保硬编码的字符串编译时是正确的类型。
- wxWidgets 的 Unicode(UNICODE=1)构建将会创建带有 ”u” 后缀的库,例如 ”libwxmsw28u.a”、”wxmsw28u_gcc_custom.dll”。
- wxWidgets 的 Unicode 构建会在 wxWidgets 库的输出目录中创建 ”mswu” 或 ”mswud” 目录。
- wxWidgets 的 ANSI(UNICODE=0) 构建创建的库没有 ”u” 后缀,例如 ”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。
- wxWidgets 的 ANSI 构建会在 wxWidgets 库的输出目录中创建 ”msw” 或 ”mswd” 目录。
其他问题可参考 wxWidgets 开发者论坛
完。
wxWidgets 在 Windows 下开发环境配置的更多相关文章
- Python在Windows下开发环境配置汇总
最近比较关注学习Python方面的资料和课程,由于Python本身基本都是在Linux下开发,本人windows用习惯了初用Linux各种别扭啊. 下面将我在配置Windows环境下的禁言写出来,与大 ...
- wxWidgets 在 Linux 下开发环境配置
本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...
- QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
由于项目开发的原因,需要配置QT creator+OpenCV2.4.2+MinGW开发环境,现对配置方法做如下总结: 1. 下载必备软件 QT SDK for Open Source C++ de ...
- Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置
Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置 1.简介 本文主要是 Windows 下 MSYS2 环境配置和 MinGW-w64 C++编译环境配置方法 2.下载 ...
- windows phone7开发环境配置错误
遇到下面这样一个问题:在配置windows phoe7开发环境的时候出现如下错误,以及相应的解决方案,希望对大家有所帮助. 装完环境后出现下面错误: [caption id="attachm ...
- java入门---windows和Linux,UNIX,Solaris,FreeBSD下开发环境配置
首先来看Windows下的操作.我们需要下载java开发工具包JDK.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/ ...
- 【并行计算-CUDA开发】Windows下opencl环境配置
首先声明我这篇主要是根据下面网站的介绍, 加以修改和详细描述,一步一步在我自己的电脑上实现的, http://www.cmnsoft.com/wordpress/?tag=opencl&pag ...
- Windows高效开发环境配置(一)
更多精彩内容,欢迎关注公众号:逻魔代码 前言 用了多年的 MacOS 做开发,一系列诸如 Alfred.Item2.Oh-my-zsh 之类的工具,大大地提升了工作的效率和使用舒适度.新工作不给配 M ...
- windows下 Rust 环境配置
搭建 Visual Studio Code 开发环境 首先,需要安装最新版的 Rust 编译工具和 Visual Studio Code. Rust 编译工具:https://www.rust-lan ...
随机推荐
- javaScript 设计模式之中介者模式示例
飞机把注册信息放到铁塔里,发送数据到铁塔,报告其它的飞机一些信息. var feiji = function( name ){ this.name = name; } feiji.prototype. ...
- 吴恩达机器学习笔记 —— 19 应用举例:照片OCR(光学字符识别)
http://www.cnblogs.com/xing901022/p/9374258.html 本章讲述的是一个复杂的机器学习系统,通过它可以看到机器学习的系统是如何组装起来的:另外也说明了一个复杂 ...
- writing objects : 值%停住
在git bush 中使用命令:git config --global http.postBuffer 524288000 因为git上传,限定一次push命令的buffer大小.
- 前端 CSS预处理器Less
引文 Less是一种动态的样式语言.Less扩展了CSS的动态行为,比如说,设置变量(Variables).混合书写模式(Mixins).操作(Operations)和功能(Functions)等等, ...
- JHipster生成微服务架构的应用栈(三)- 业务微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- Java-- String源码分析
版权声明:本文为博主原创文章,未经博主允许不得转载 本篇博文基于java8,主要探讨java中的String源码. 首先,将一个类分为几个部分,分别是类定义(继承,实现接口等),全局变量,方法,内部类 ...
- 没有服务商如何购买ERP的序列号?
一.试用期(未过期) 站点版购买: 门店版购买: 二.试用期(使用时间<=15天) 三.试用期(已过期) 登录时会弹出以下弹窗 剩下的购买步骤与未过期时购买步骤一致 四.续费 剩下步骤与未过期时 ...
- 【redis专题(9)】事务
Redis支持简单的事务,所谓简单是因为其不支持回滚(回滚是用队列模仿的),与mysql有以下区别 rollback与discard的区别: 如果已经成功执行了2条语句, 第3条语句出错 Rollba ...
- 服务器 'xxxx' 已被定义为分发服务器。若要将该服务器重新配置为分发服务器,必须首先卸载现有的分发服务
使用AWS DMS(Database Migration Service)将SQL Server数据库同步到AWS的Data Lake上,需要在本地源数据库上配置复制,在配置分发向导最后一步时,遇到下 ...
- SQL Server中如何定位Row Lock锁定哪一行数据
在SQL Server中有时候会使用提示(Hint)强制SQL使用行锁(Row Lock),前两天有个同事咨询了一个问题,如何定位Row Lock具体锁定了哪一行.其实这个问题只适合研究一下,实际意义 ...