`
javamvp
  • 浏览: 38895 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

C++编程报告——WxWidget环境配置(IDE:CodeBlocks)

阅读更多

  最近接了个关于C++的项目,需要跨平台性,所以转载了一篇配置相关BLOG,此帖子转载链接:

  http://henrya2.blog.163.com/blog/static/754514192008102342642940

  1.简介:

  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的编译器,如果使用别的编译器,同样也需要自己进行相应的配置。

  2.环境安装:

  编译器:

  你至少应该正确安装了免费的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

  执行构建命令,MinGW/GCC推荐的命令是:

  mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1

  MSVC推荐的构建命令是:

  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的配置向导。

  3.在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应用程序就会出现。如果出现了什么问题,你可以参考后面的常见问题。

  4.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。

  • wxWidgetsDLL构建会创建导入库(如 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")宏来确保硬编码的字符串编译时是正确的类型。

  • wxWidgetsUnicodeUNICODE=1)构建将会创建带有"u”后缀的库,例如”libwxmsw28u.a”、"wxmsw28u_gcc_custom.dll”。
  • wxWidgetsUnicode构建会在wxWidgets库的输出目录中创建"mswu”或"mswud”目录。
  • wxWidgetsANSIUNICODE=0)构建创建的库没有"u”后缀,例如”libwxmsw28.a”、”wxmsw28_gcc_custom.dll”。
  • wxWidgetsANSI构建会在wxWidgets库的输出目录中创建”msw”或”mswd”目录。

  5.常见问题:

  出现类似于"wx/setup.h: No such file or directory”的错误

  你在构建选项中缺少了很重要的编译器搜索路径。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,那么打开你的项目的构建选项并给编译起的搜索路径中添加"$(#wx.lib)\gcc_dll\mswu“(这里假设是一个单一的Unicode DLL构建)。

  出现类似于"cannot find -lwxmsw28u”的错误

  构建选项中的链接库错了。首先确认你是否在运行wxWidgets项目向导的时候正确选择了wxWidgets的构建配置。如果重新运行向导并配置依然无效,确定你构建了什么库,并相应在构建选项中调整库的名字。

  6.小结:

  我已经在自己的机器上编译通过,感谢该贴来源作者提供该资料,在此致敬:

  http://henrya2.blog.163.com/blog/static/754514192008102342642940

分享到:
评论

相关推荐

    配置好的CodeBlocks20.03+wxWidgets3.14

    CodeBlocks是一款开源、免费的C++集成开发环境(IDE),以其轻量级、高度可定制性和易用性受到许多程序员的青睐。版本20.03是它的一个稳定版本,提供了许多开发C++项目的功能。而wxWidgets则是一个跨平台的GUI库,...

    CodeBlocks的安装以及wxWidget的安装及配置

    CodeBlocks是一款功能强大的集成开发环境(IDE),wxWidgets是一个跨平台的图形用户界面(GUI)库。下面将详细介绍如何安装和配置CodeBlocks,以及如何安装和配置wxWidgets在Windows平台下的wxMSW版本。 一、安装...

    wxWidget环境配置[归纳].pdf

    ### wxWidget环境配置详解 #### 一、简介与准备工作 在进行软件开发的过程中,选择合适的图形界面库至关重要。wxWidgets作为一个跨平台的C++ GUI工具包,在开发领域中备受推崇。它不仅支持Windows、Linux、macOS等...

    codeBlocks + wxWidget做的扫雷程序

    codeBlocks是一款开源的、跨平台的C++集成开发环境(IDE),它提供了一套完整的开发工具,包括编辑器、编译器、调试器等,使得开发者能够方便地进行C++项目的开发。wxWidgets则是一个用于创建原生跨平台GUI应用程序...

    wxAutoPokemon_newsndd_C++Wxwidget_play_

    1. **C++编程**:C++是一种强类型、静态类型的编程语言,适合系统编程、游戏开发、高性能计算等。它的特点是面向对象,同时也支持函数式和泛型编程,提供了丰富的库支持,包括STL(标准模板库)。 2. **wxWidgets**...

    以CodeBlocks为IDE,在wxWidgets中实现窗体透明效果

    `CodeBlocks`是一款免费且开源的集成开发环境(IDE),非常适合初学者和专业开发者用于C++编程。本教程将详细讲解如何在`CodeBlocks`中利用`wxWidgets`库实现窗体透明效果。 首先,确保你已经安装了`CodeBlocks`和`...

    wxWidget中文手册

    - **C++库**:作为一个C++编写的库,wxWidget充分利用了C++的强大功能,提供了高效的编程接口。 #### 五、wxWidget的不同平台实现 - **wxMSW**:针对Windows操作系统的实现。 - **wxGTK**:用于基于GTK的Linux系统...

    MFC多语言实现--wxWidget移植法

    **MFC多语言实现——wxWidget移植法** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于构建Windows应用程序。然而,MFC自身并不直接支持多语言功能,开发者通常需要自行实现这一特性。本文将...

    emIDE是一个开源的嵌入式集成开发环境

    emIDE是一个开源的嵌入式集成开发环境,基于Code::Blocks开发,能够支持多个平台和多个厂家的嵌入式硬件,继承了Code::Blocks的优点. 1. WIN7-64 2. 编译环境 CodeBlock 10.05带mingw版 3. 默认安装到C:\Program ...

    Codeblocks的汉化包及说明文档

    最近在搞跨平台开发,据评价说IDE codeblocks很好用,特别和wxWidget的强关联性。初次使用,比较手生,对界面有个陌生感,图个方便,所以汉化一下。包的说明:针对当前发布的稳定版本codeblocks-8.02-setup.exe,...

    基于wxWidget的计算器小示例

    【基于wxWidget的计算器小示例】是一个适合初学者学习的编程项目,它利用CodeBlocks作为集成开发环境(IDE)和wxWidgets库来构建一个基本的图形用户界面(GUI)计算器。wxWidgets是一个跨平台的C++库,允许开发者...

    Wxwidget使用手册

    - **定义**:WxWidgets 是一款跨平台的图形用户界面(GUI)工具包,支持多种编程语言,包括 C++ 和 Python。 - **特点**:它为开发者提供了丰富的组件集合和强大的功能,帮助创建美观且功能全面的应用程序。 - **...

    codeblocks下搭载wxwidgets的统计计算器源代码

    CodeBlocks是一款开源、免费的C++集成开发环境(IDE),而wxWidgets则是一个跨平台的C++库,用于创建GUI应用程序。本项目是利用CodeBlocks作为开发工具,结合wxWidgets库构建的一个统计计算器的源代码实例。这个...

    CodeBlocks12.11+wxWidgets3.0 wizard patch

    新推出的wxWidgets3.0.0可以运行CodeBlocks12.11的向导文件补丁,欢迎试用。直接覆盖CB安装目录下的CodeBlocks\share\CodeBlocks\templates\wizard\wxwidgets文件夹中即可

    wxWidget多语言移植到MFC动态库DLL

    本项目涉及到将wxWidgets的多语言功能移植到MFC动态库DLL中,这是一个涉及到C++编程、多语言支持、动态链接库(DLL)以及不同库间集成的技术挑战。 首先,wxWidgets的多语言支持主要依赖于`wxLocale`类,它允许程序...

    wxWidgets和MFC混合编程

    wxWidgets和MFC混合编程 wxWidgets和MFC混合编程是指在一个程序中同时使用wxWidgets和MFC这两种技术。wxWidgets是一个跨平台的GUI库,而MFC是微软公司提供的一种应用程序框架。虽然两者都可以用来开发图形用户界面...

    C++开源程序库 C++开源程序库

    由于ICE的出现较晚,开发者比较系统地应用了新的C++编程风格,所以成为了研读C++代码的良好目标。 4、正则表达式:boost::regex 正则表达式是编程工作中最强有力的工具之一。C++的正则表达式支持一直以来是一个...

    wxWidget开发文档

    wxWidget文档,可以进行C++跨平台编程,是新手学习的好资料

    wxWidget参考资料

    `wxDev-C++使用入门.pdf`这本电子书可能是针对wxDev-C++集成开发环境的,wxDev-C++是基于wxWidgets的一个轻量级IDE,对于初学者来说,提供了一个友好的界面来编写和调试wxWidgets代码。书中可能会涵盖如何安装和配置...

    wxwidget换肤工具wxSkin

    wxWidgets是一个跨平台的C++库,它允许开发者编写一次代码,就能在多个操作系统上运行,包括Windows、Linux和macOS等。这个换肤工具特别适用于那些希望为自己的应用程序添加个性化外观的开发者。 在描述中提到的...

Global site tag (gtag.js) - Google Analytics