使用MinGW编译并配置wxWidgets

来源:互联网 发布:大富豪3.41棋牌源码 编辑:程序博客网 时间:2024/06/05 18:46

介绍

wxWidgets 是一个开源的跨平台的 C++ 构架库(framework),它可以提供 GUI (图形用户界面)和其它工具。

软件准备

  1. wxWidgets:http://wxwidgets.org/
  2. MinGW(推荐TDM-GCC):http://tdm-gcc.tdragon.net/

把 mingw/bin 目录放在系统环境变量 PATH 中。

编译 wxWidgets

Makefile 文件位于 wxWidgets/build/msw,gcc 对应 config.gcc 和 makefile.gcc,而我们的参数均在 config.gcc 中,你可以直接查阅这个文件来获得帮助。

下面的 Makefile 文件来自 wxWidgets 3.0.0。

Makefile 参数讲解

UNICODE

编译出 wxWidgets 支持 Unicode,1 为使用 Unicode。

可取:1,0

默认:1

BUILD

wx 的编译模式

可取:debug,release

默认:debug

DEBUG_INFO

编译的 wx 是否包含调试信息,1为包含。

可取:0,1,default

默认:default

注:default 指当 BUILD=debug 包含调试信息,当 BUILD=release 不包含。

MONOLITHIC 

输出的库是一个单一的大文件还是多个小文件,1 为输出单一大文件。

可取:0,1

默认:0

VENDOR

可以自定义小名称,会跟在dll的最后面。

默认的 custom 输出的文件名称类似为wxmsw30u_xxx_gcc_custom.dll

可取任意字符

默认:custom

SHARED 以及 RUNTIME_LIBS

这两个选项共同指定wx库的是静态的还是动态的。

如果 SHARED=1 则输出动态库并导出符号(.dll和.a)

如果 SHARED=0 且 RUNTIME_LIBS=static 则输出静态库(.a),如果 SHARED=0 且 RUNTIME_LIBS=dynamic 则输出动态库但不导出符号(.dll)

默认:SHARED=0,RUNTIME_LIBS=dynamic

编译

3.0.2 已经要求编译器使用 C++11,所以编译时还需要附带参数 -std=gnu++11 或者 -std=c++11

动态库

在 wx 根目录新建一个批处理:

@echo offcd build/msw@title 编译wxWidgetsmingw32-make -f makefile.gcc clean@echo 编译调试版本mingw32-make -f makefile.gcc CPPFLAGS=-std=gnu++11 LDFLAGS=-s SHARED=1 BUILD=debug UNICODE=1 DEBUG_INFO=0@echo 编译发行版本mingw32-make -f makefile.gcc CPPFLAGS="-Os -std=gnu++11" LDFLAGS=-s SHARED=1 BUILD=release UNICODE=1 DEBUG_INFO=0@echo 编译结束@pause

静态库

同样在 wx 根目录新建一个批处理:

@echo offcd build/msw@title 编译wxWidgetsmingw32-make -f makefile.gcc clean@echo 编译调试版本mingw32-make -f makefile.gcc CPPFLAGS=-std=gnu++11 LDFLAGS=-s SHARED=0 BUILD=debug UNICODE=1 DEBUG_INFO=0 RUNTIME_LIBS=static@echo 编译发行版本mingw32-make -f makefile.gcc CPPFLAGS="-Os -std=gnu++11" LDFLAGS=-s SHARED=0 BUILD=release UNICODE=1 DEBUG_INFO=0 RUNTIME_LIBS=static@echo 编译结束@pause
然后双击就开始编译了。

关于编译错误

已知的一个错误是由于 MSYS 引起的,所以在编译前 MSYS 不能在环境变量 PATH 中。

另外目前的 wxWidgets 要求编译器支持 C++11,所以如果编译器不支持或者没有开启相应开关也可能导致报错

相关工具

官方建议工具集合

http://wiki.wxwidgets.org/Tools

IDE

Code::Blocks

只需要设置一个全局变量 wx 指向 wxWidgets 即可。

如果使用 Unicode 则需要选择 Enable,如果编译的是动态库还需要勾选 Use wxWidgets DLL。

CodeLite

在全局变量中添加:

WXWIN 指向 wx 的根目录

WXCFG 指向当前变异的配置文件,一般位于 lib\gcc_dll\mswu或lib\gcc_dll\mswud

界面设计

DialogBlocks

用起来最顺手的一个,可以直接生成 Makefile 或者 VS 的项目文件,但是需要搭配其他编辑器。

共享软件

网站:http://www.anthemion.co.uk/dialogblocks/

wxFormBuilder

开源跨平台,可生成 C++, Python, PHP, Lua 和 XRC 的源代码

网站:http://sourceforge.net/projects/wxformbuilder/

wxCrafter

优点在于可与 Codelite 无缝集成,也可单独安装。更新频率高,对新版 wx 的支持比较完善

有免费版和收费版两种,免费版有控件个数和类型限制

网站:http://wxcrafter.codelite.org/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 匿名收到饿了吗怎么办 农行卡被冻结了怎么办 被银行冻结的钱怎么办 蚂蚁花呗冻结了怎么办 淘宝号被冻结了怎么办 qq钱包被冻结了怎么办 浦发信用卡降额怎么办 外地邮政卡丢了怎么办 手机掉了,支付宝怎么办 支付宝手机丢了怎么办 手机丢了,微信怎么办 手机丢后支付宝怎么办 oppo手机被偷了怎么办 三星手机被偷了怎么办 手机被偷了号码怎么办 手机被偷 微信怎么办 手机被偷怎么办,还关机 我的手机被偷了怎么办 医保卡不能用了怎么办 招行u盾丢了怎么办 信用卡刷爆了要怎么办 办分期的卡丢了怎么办 房贷银行卡掉了怎么办 房贷银行卡丢了怎么办? 行驶证丢了怎么办补办 行驶证丢了怎么办异地 浦发信用卡盗刷怎么办 苹果id被盗变砖怎么办 信用卡丢了被刷怎么办 ins注册不了怎么办安卓 偷玩电脑被发现怎么办 做作业不认真的怎么办 老人脑供血不足怎么办 哺乳期吃了辣的怎么办 孕32周胎位臀位怎么办 怀孕32周胎位不正怎么办 7个月胎位不正怎么办 胎心监护老不过怎么办 8个月了胎位不正怎么办 怀孕八个月了胎位不正怎么办 怀孕八个月胎位不正怎么办