在Code:Blocks使用MinGW编译wxWidgets库

1,安装Code:BlocksMinGW编译器,下载wxWidgets

http://www.codeblocks.org/ 下载带有mingwcodeblocks安装包.(eg:codeblocks-10.05mingw-setup.exe)

http://www.wxwidgets.org/下载wxWidgets压缩包(eg:wxWidgets-2.9.1.7z)

分别安装,(注意,二者所在目录不能为中文,wxWidgets所在目录必须不能包含空格)

(eg:codeblocks C:\Program Files\CodeBlocks

      wxWidgets C:\wxWidgets-2.9.1)

2,定义编译器环境变量,测试编译器版本

        可将编译器路径添加到电脑环境变量中,也可以写个批处理,临时指定路径.(批处理会在后边给出)

按上边路径安装后,对应编译器路径为C:\Program Files\CodeBlocks\MinGW\binC:\Program Files\CodeBlocks\MinGW\mingw32\bin

(如果是64位的操作系统,则CodeBlocks可能被安装在C:\Program Files (x86)\CodeBlocks下面,这样的话这两个路径就需要做相应的修改)

路径设置过后,输入 mingw32-make -v 来测试编译器版本,确保版本为3.80或以上.

3.编译wxWidgets

首先打开命令窗口(运行->cmd),定位到wxWidgets目录下的\build\msw文件夹,然后进行下面的操作。

1)首先清除之前编译过的文件,执行mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean

(如果,你是第一次下载并编译wxWidgets,则不需要执行次步骤。)

2)清除之前的编译文件后,开始编译,执行 mingw32-make -f makefile.gcc  MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
(
注意,清除时的配置要可之后重新编译的配置一致.编译过程可能会很长,请耐心等待.)

编译配置:

BUILD  控制编译wxWidgetsdebug版本或release版本,debug版本时,库名带后缀d.

SHARED 控制编译wxWidgetsDLL或是static, DLL,多个wxWidgets工程可共用相同的DLL,工程发布时,必须包含该DLL文件

MONOLITHIC 控制编译成1个独立的DLL,还是多个DLL

UNICODE 控制编译出的wxWidgets是否支持unicode,若使用汉字,必须支持unicode

wxWidgets编译选项简介
  BUILD
  BUILD控制wxWidgets构建调试版本(BUILD=debug)或者是发布版本(BUILD=release)。绝大多数情况下你只需要wxWidgets的发布版本就可以了,因为你应该不想要去调试wxWidgets自身,同时你依然可以通过链接wxWidgets的发布版本来构建你自己的程序的调试版本。
  
  调试构建wxWidgets会创建带有”d”后缀的库,例如”libwxmsw28d.a”、”wxmsw28d_gcc_custom.dll”。
  调试构建wxWidgets会在wxWidgets库的输出目录中创建”mswd” 或者 “mswud” 目录。
  发布构建wxWidgets创建的库没有”d”后缀,例如”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。
  发布构建wxWidgets会在wxWidgets库的输出目录中创建”msw” 或者 “mswu” 目录。
  SHARED
  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控制是构建一个单一的库(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
  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”目录。
  常见问题
  出现类似于”wx/setup.h: No such file or directory”的错误
  你在构建选项中缺少了很重要的编译器搜索路径。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,那么打开你的项目的构建选项并给编译起的搜索路径中添加”$(#wx.lib)\gcc_dll\mswu“(这里假设是一个单一的Unicode DLL构建)。
  
  出现类似于”cannot find -lwxmsw28u”的错误
  构建选项中的链接库错了。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,确定你构建了什么库,并相应在构建选项中调整库的名字。
  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  若要构建的程序能够显示中文,要对codeblocks进行一下设置,在edit(编辑)菜单里面的文件编码选择UTF-8,否则编译报错。

 

关于命令中各参数的说明可以在\build\msw\config.gcc文件中找到 

 

(更详细的描述,请参照http://wiki.codeblocks.org/index.php?title=WxWindowsQuickRef

http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_(MSW)

http://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW)

以上操作,可用1个批处理完成,如下:(对应路径改成自己安装的路径即可)

set path=C:\Program Files\CodeBlocks\MinGW\bin;C:\Program Files\CodeBlocks\MinGW\mingw32\bin
mingw32-make -v
cd C:\wxWidgets-2.9.1\build\msw
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 clean
pause
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1
pause

wxWidgets2.9.1时可能会在编译时出错,请参考

http://zaazbb.blog.163.com/blog/static/1689785592010101223435157/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值