本文基于 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. #WEB安全基础 : HTML/CSS | 0x4HTML模块化

    想让你的网页变得整洁吗?找我就对了,当然你会认识几个新元素,和它们交朋友吧! 我帮你联系一下这几个新元素,这样交朋友就变得简单了 images里放着图片   以下是index.html的代码 < ...

  2. Hibernate(链接数据库方便得多)!

    首先让我们看一下配置文件,我这里先是用struts搞得controller,不明白struts的可以去百度一下这里就不讲解了: 之后我们需要做一个hibernate的配置文件内容如下(这里链接的是my ...

  3. 洛谷P4103 [HEOI2014]大工程(虚树 树形dp)

    题意 链接 Sol 虚树. 首先建出虚树,然后直接树形dp就行了. 最大最小值直接维护子树内到该节点的最大值,然后合并两棵子树的时候更新一下答案. 任意两点的路径和可以考虑每条边两边的贡献,\(d[x ...

  4. 2018-08-13 Head First OO分析设计一书略读与例子中文化

    注: 此笔记仅为个人学习此教程的布局和材料组织之用. 如有兴趣请自行详阅. 第一章是以吉他商店的存货系统作例子. 第二章设计有狗洞的门. 第三章对第二章基础上, 更改需求后对应设计. 第四章继续改进此 ...

  5. arcgis在折点处打断并建立网络分析(最短路径等问题)

    目的:GIS网络分析用于对段路径等问题.这里仅仅讲述如何建立网络分析. 网络建立前必须满足以下条件 1.要素文件在节点处打断(本文下面会叙述) 2.要素文件在地理数据库里的数据集里(一般是这样) 3. ...

  6. 全参考视频质量评价方法(PSNR,SSIM)以及与MOS转换模型

    转载处:http://blog.csdn.NET/leixiaohua1020/article/details/11694369 最常用的全参考视频质量评价方法有以下2种: PSNR(峰值信噪比):用 ...

  7. <1>Linux日志查找方法

    Linux日志查找方法 适用于测试,开发,运维人员,用来查找Linux服务器问题的一般方法,比较实用,如果有更好的办法可以一块讨论,欢迎大神们来指导哈!!! 进入正题 第一步.通过Xshell登录服务 ...

  8. python 数据驱动ddt使用,需要调用下面的代码,请挨个方法调试,把不用的注释掉

    #!/usr/bin/env/python # -*- coding: utf-8 -*- # @Time : 2018/12/15 15:27 # @Author : ChenAdong # @Em ...

  9. SQL 数据插入、删除 大数据

    --测试表 CREATE TABLE [dbo].[Employee] ( [EmployeeNo] INT PRIMARY KEY, [EmployeeName] [nvarchar](50) NU ...

  10. request获取各种路径

    equest.getRealPath() 这个方法已经不推荐使用了,代替方法是: request.getSession().getServletContext().getRealPath() 在ser ...