本文基于 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 下开发环境配置的更多相关文章

  1. Python在Windows下开发环境配置汇总

    最近比较关注学习Python方面的资料和课程,由于Python本身基本都是在Linux下开发,本人windows用习惯了初用Linux各种别扭啊. 下面将我在配置Windows环境下的禁言写出来,与大 ...

  2. wxWidgets 在 Linux 下开发环境配置

    本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...

  3. QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置

    由于项目开发的原因,需要配置QT creator+OpenCV2.4.2+MinGW开发环境,现对配置方法做如下总结: 1.  下载必备软件 QT SDK for Open Source C++ de ...

  4. Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置

    Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置 1.简介 本文主要是 Windows 下 MSYS2 环境配置和 MinGW-w64 C++编译环境配置方法 2.下载 ...

  5. windows phone7开发环境配置错误

    遇到下面这样一个问题:在配置windows phoe7开发环境的时候出现如下错误,以及相应的解决方案,希望对大家有所帮助. 装完环境后出现下面错误: [caption id="attachm ...

  6. java入门---windows和Linux,UNIX,Solaris,FreeBSD下开发环境配置

        首先来看Windows下的操作.我们需要下载java开发工具包JDK.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/ ...

  7. 【并行计算-CUDA开发】Windows下opencl环境配置

    首先声明我这篇主要是根据下面网站的介绍, 加以修改和详细描述,一步一步在我自己的电脑上实现的, http://www.cmnsoft.com/wordpress/?tag=opencl&pag ...

  8. Windows高效开发环境配置(一)

    更多精彩内容,欢迎关注公众号:逻魔代码 前言 用了多年的 MacOS 做开发,一系列诸如 Alfred.Item2.Oh-my-zsh 之类的工具,大大地提升了工作的效率和使用舒适度.新工作不给配 M ...

  9. windows下 Rust 环境配置

    搭建 Visual Studio Code 开发环境 首先,需要安装最新版的 Rust 编译工具和 Visual Studio Code. Rust 编译工具:https://www.rust-lan ...

随机推荐

  1. jQuery 对AMD的支持(Require.js中如何使用jQuery)

    AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案. AMD 模块格 ...

  2. BZOJ 1022: [SHOI2008]小约翰的游戏John (Anti-nim)

    Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3134  Solved: 2003[Submit][Status][Discuss] Descripti ...

  3. 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)

    题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到 ...

  4. 多线程编程CompletableFuture与parallelStream

    一.简介 平常在页面中我们会使用异步调用$.ajax()函数,如果是多个的话他会并行执行相互不影响,实际上Completable我理解也是和它类似,是java 8里面新出的异步实现类,Completa ...

  5. OkHttpUtils简单的网络去解析使用

    先添加依赖: implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.zhy:okhttputils:2.0.0' 网 ...

  6. Android内存优化(一)Dalvik虚拟机和ART虚拟机对比

    1.概述 Android4.4以上开始使用ART虚拟机,在此之前我们一直使用的Dalvik虚拟机,那么为什么Google突然换了Android运行的虚拟机呢?答案只有一个:ART虚拟机更优秀. 2.D ...

  7. 性能优化7--App瘦身

    1. 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视.关于瘦身的原因,大概有以下几个方面: 对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更 ...

  8. Testlink1.9.17使用方法(第五章 测试用例管理)

    第五章 测试用例管理 QQ交流群:585499566 TestLink支持的测试用例的管理包含二层:分别为新建测试用例集(Test Suites).创建测试用例(Test Cases).可以把测试用例 ...

  9. git 入门教程之基本概念

    基本概念 了解工作区,暂存区和版本库的区别和联系有助于我们更好理解 git 的工作流程,了解命令的操作意图. git 和其他版本控制系统如 svn 的不同之处就是有暂存区的概念. 基本概念 工作区 | ...

  10. git 入门教程之实战 git

    实战 git git 是一款分布式版本控制系统,可以简单概括: 不要把鸡蛋放在一个篮子里,你的一举一动都在监视中. 实战场景 你作为某项目的其中一员或者负责人,和小伙伴们一起开发,大家既有着各自分工互 ...