`

Windows上配置Code::Blocks + wxWidgets

阅读更多

http://apps.hi.baidu.com/share/detail/7394380

Code::Blocks是一个跨平台的C++IDE,支持Windows、Linux、MacOSX。同时他还支持各种不同的编译器,如GNU/MinGW C/C++,VC++ 6.0/2003/2005/2008,Borland C++,Digital Mars等等各种不同的编译器。


经过14个组员长达2年对Code::Blocks的全部重写,终于发布了正式版8.02,这个版本更包括了对构建基于wxWidgets的跨平台GUI程序的支持,堪比Visual C++。


wxWidgets则是一个十分优秀的跨平台的GUI框架,用其编写的C++应用程序可以十分方便地迁移到不同的系统上去。


Code::Blocks +
wxWidgets两个同是支持跨平台的IDE和框架,使得跨平台的编程非常方便。然而Code::Blocks虽然包含了对wxWidgets的支持,
但是却没有包含wxWidgets的构建环境,我们必须手动进行配置。另外,Code::Blocks有一个安装包包含了MinGW的编译器,如果使用别
的编译器,同样也需要自己进行相应的配置


前提准备


编译器


你至少应该正确安装了免费的MinGW/GCC编译器或者是某种微软的编译器Express editions是免费的,但是你还需要安装Platform SDK)。如果是用MinGW/GCC,至少要准备gcc-core、gcc-g++、binutils、w32api以及mingw32-make包;同时,确保包含编译器可执行文件的目录(一般是C:\MinGW\bin)在Windows的PATH环境变量中。


如果选择MinGW/GCC编译器,可以在直接选择包含MinGW的Code::Blocks安装包,见下一节。


最新版的Code::Blocks


请下载最新的8.02发布版。尚未选择编译器可以选择包含MinGW的安装包


wxWidgets


你可以选择下载wxWidgets的源代码然后自己进行构建,或者是直接安装预编译的wxPack。


wxWidgets源代码


安装包较小,可以根据自己的需求进行自定义构建,但是需要花费长时间进行编译。如果不清楚编译选项,可能导致无法成功配置Code::Blocks。


目前推荐的wxWidgets的版本是2.8.7。点击此处下载wxWidgets 2.8.7源代码Windows安装包(wxMSW-2.8.7-Setup.exe; 12.0 MB)。你也可以检查一下wxWidgets的下载页面看看有没有更新的稳定版下载。强烈建议你将代码安装到不带空格的路径中。必须保证盘中至少有300MB的剩余空间。



wxPack

虽然安装包达200MB,全部安装需要3G,但是包含了预编译的所有可能用到的库文件,而且包含VC和GCC的两种版本,可以不用去考虑构建选项了。


当前wxPack的稳定发布版是 v2.8.7.03,基于 wxWidgets 2.8.7。点击此处下载 wxPack v2.8.7.03 (wxPack_v2.8.7.03.exe, 236.9 MB)。你也可以查看wxPack下载页面看看有没有更新的稳定版下载。强烈建议将wxPack安装到没有空格的路径中。如果你选择只MSVC版本,应保证至少有700MB的剩余空间;如果只选择MinGW/GCC版本,则应保证至少有2.2GB的剩余空间。


提示


如果磁盘使用了NTFS格式,可以开启文件压缩功能,上述的目录在压缩后可以减少50%的空间占用。



编译wxWidgets


使用wxPack则可以跳过这一步。


打开命令行(在开始菜单中点击“运行”,输入cmd并回车)。如果使用的MSVC,你可以使用特定的用于设置环境变量的命令行。如果你使用的
MSVC版本还要求你单独下载Platform SDK,确保全部包含了标准编译工具和Platform SDK中要用到的环境变量。


转到wxWidgets的构建目录,其中<wxWidgets>是源码所在路径,通常是C:\wxWidgets-2.8.7


cd <wxWidgets>\build\msw</pre><br /><p>执行构建命令,<strong>MinGW/GCC</strong>推荐的命令是:</p><br /><pre>mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1</pre><br /><p><strong>MSVC</strong>推荐的构建命令是:</p><br /><pre>nmake -f makefile.vc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1

这个过程需要花很久,快的机器大概30分钟可以完成,慢的可能就需要几个小时了。


如果使用的GCC的版本较新,构建过程中可能会出现大量的警告。这样会明显导致构建过程变慢;你可以将错误信息重定向到文件中,在上述命令后面添加2> err.log,也可以通过2>nul直接禁止警告信息。


其中关于BUILD、SHARED、MONOLITHIC以及UNICODE选项的解释,请仔细参考文章后面关于wxWidgets的构建参数的解
释,这些参数十分关键,他们直接定义了你所使用的基本的wxWidgets开发环境。你必须严格按照你的编译参数设置Code::Blocks的配置
导。


Code::Blocks中创建wxWidgets项目


Code::Blocks的起始页面中,选择“Create a new project”,也可以在File菜单中,选择“New” -> “Project…”。


找到并选择“wxWidgets project”,并创建,接下来会出现一个向导帮助进行wxWidgets项目的配置


  1. 第一个页面是简介,可以选择以后跳过。
  2. 选择你要使用的wxWidgets版本。如果你是按照本文的过程配置的,那么你应该选择“wxWidgets 2.8.x”。
  3. 设置你的项目的名字的位置。
  4. 输入作者的信息(非必要)
  5. 选择自动代码和文件生成的选项。
  6. 选择wxWidgets的位置。强烈建议在此使用全局变量:输入“$(#wx)”(不包含引号)。如果你还没定义这个全局变量,那么全局变量对话框会出现,在Base Path中,选择你的wxWidgets安装路径。其他路径可以不用填。
  7. 为你的项目选择debug/release配置。推荐至少选择debug配置。
  8. 选择你的wxWidgets构建选项。必须和你构建wxWidgets时所使用的选项一致!如果你按照本文之前的方式构建的,应该将
    “wxWidgets Library
    Settings”下的全部三个选项选中。如果用的是wxPack,由于wxPack包含了各种不同的版本,所以你只需要选择你需要的选项。这个页面的另
    一个设置和wxWidgets的构建选项没有关系,你可以按照喜好来选择。如果,出于某种原因,你想使用调试版本的wxWidgets构建,选择
    “Configure Advanced options”然后在下一页选择“Use __WXDEBUG__ and Debug
    wxWidgets lib”。
  9. 如果需要,选择额外的库。一般应用的话应该无须选择其中任何一个。

构建并运行程序


接下来,就可以选择“Build and run”(F9)对程序进行构建并运行了。如果顺利,你的wxWidgets应用程序就会出现。如果出现了什么问题,你可以参考后面的常见问题。


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的构建配置。如果重新运行向导并配置依然无效,确定你构建了什么库,并相应在构建选项中调整库的名字。

分享到:
评论

相关推荐

    搭建跨平台编程环境Code::Blocks+wxWidgets

    这里以目前最新的Code::Blocks 1.0rc2和wxWidgets 2.6.2为例,分别介绍Windows平台和FreeBSD平台下如何搭建Code::Blocks+wxWidgets环境,其它平台方法可类推。

    Windows上配置CodeBlocks + wxWidgets

    Windows上配置Code::Blocks + wxWidgets

    Code::Blocks 8.02 GCC 4.40 汉化包

    Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、 Hitachi汇编文件、Lua文件、...

    Code::Blocks8.02

    Code::Blocks 是一个...Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢,再也不必忍受VS.NET的庞大和高昂的价格。

    Code Blocks

    Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、Hitachi汇编文件、Lua文件、MASM...

    Code::Blocks SDK.chm

    Code::BloCKS官方使用手册,CHM格式 此文件包含CodeBlocks使用手册,含CodeBlocks官方发布的英文原版使用手册。 CodeBlocks是一个开放源码的全功能的跨平台C/C++集成开发环境。CodeBlocks是开放源码软件。CodeBlocks...

    推箱子小游戏 c++ wxwidgets code:blocks

    做了20天的小游戏,跨平台,稳定,开源的游戏,采用wxwidgetsAPI和codeblocks集成开发环境,我的推箱子啊,当然是初学,有地图编辑器,用户能自己定义地图,能自动找路

    适用于windows 10 x64开源软件Code::Blocks r13000 重构版

    开源软件Code::Blocks 是一款跨平台集成开发工具,支持多种编译器,轻量便携,功能强大。这里提供的是svn r13000 64位重构版。运行环境windows 10 x64,解压后可直接运行。 源代码可从...

    code blocks

    Code::Blocks是一个基于GPL2的开源跨平台 C++IDE,采用插件构架,它所提供的插件决定了...所以,在使用Code::Blocks过程中,配合wxWidgets库是最佳的选择,从某种程度上讲,Code::Blocks就是专为wxWidgets量身打造的。

    Code::Blocks Ver9884 x64 for Windows

    运行环境 Windows 64位版本 编译工具 CodeBlocks 官方32位版本、TDM-GCC64、GnuWin32 zip 库支持 wxWidgets 2.8.12、boost 1.56 源代码 CodeBlocks SVN 9884 使用方法 直接覆盖官方的安装目录

    Code Blocks 8.02 带mingw

    Code:: Blocks支持插件,目前的插件包括代码格式化工具AStyle、代码分析器、类向导、代码补全、代码统计、编译器选择、复制字符串到剪贴板、调试器、文件扩展处理器、Dev-C++ DevPak更新/安装器、DragScroll、源码...

    Code::Block for puppy linux

    但是本人也发现了一个问题, 不知道如何解决, CodeBlocks 在windows,Linux本机,以及虚拟机上都飞速, 但是,本人是通过 xManager 登录到服务器上使用的, 此时UI变得非常慢, 慢的让我无法忍受~~~服务器配置:...

    自带编译器的CodeBlocks,版本为20.03。

    虽然Code::Blocks从一开始就追求跨平台目标,但是最初的开发重点是Windows平台,从06年3月21日版本:1.0 revision 2220开始,Code::Blocks在它的每日构建中正式提供GNU/Linux版本,这样 Code::Blocks在1.0发

    c++入门编程源代码集合

    Code::Blocks 12.11 正式发布,该版本更加稳定,功能更加强大(据说Mac版还不够稳定) Code::Blocks (codeblocks)是一个开源、免费、跨平台的c++ IDE...Code::Blocks是用c++编写的(用wxWidgets库),自带MinGW编译器。

    codeblocks+c语言入门

    Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发...Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。

    wxTranslatepluginForCB:'Code :: Block'脚本插件,用于翻译'wxWidgets'项目-开源

    目标是仅使用“ wxWidgets”的开发项目以本地语言翻译“ Code :: Blocks”下的开发项目。 扩展脚本'script \ wxTranslate_plugin.script'在目录'trlocale'中生成文件:-对于单个项目,为'name_projet.po';-对于合作...

    sample-wxwidgets-windows-service:基于wxWidgets的Windows服务的示例

    sample-wxwidgets-windows-service 基于wxWidgets的Windows服务的示例该Windows服务示例是使用wxWidgets 3.0.2编写的,并在Windows 7上进行了测试。我敢肯定,它也可以在其他版本上使用。 使用了Code :: Blocks IDE...

    codeblocks-12.11mingw-setup

    Code::Blocks是一个免费、开源、跨平台的C/C++ IDE,支持Windows、Linux、MacOSX。同时他还支持各种不同的编译器,如 GNU/MinGW C/C++,VC++ 6.0/2003/2005/2008,Borland C++,Digital Mars等等各种不同的编译器。...

    codeblocks.zip

    Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发...Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。

Global site tag (gtag.js) - Google Analytics