IDE简介 http://www.baidu.com/s?wd=codeblocks ,这里只是介绍Windows平台下的IDE环境配置。
CodeBlocks的下载、安装、配置:
下载:http://www.codeblocks.org/downloads/26 官方目前的说明如下
File | Date | Size | Download from |
codeblocks-12.11-setup.exe codeblocks-12.11-setup_user.exe | 28 Nov 2012 | 28.2 MB | |
codeblocks-12.11mingw-setup.exe codeblocks-12.11mingw-setup_user.exe | 28 Nov 2012 | 96.8 MB |
NOTE: The codeblocks-12.11mingw-setup.exe file includes the GCC compiler and GDB debugger from TDM-GCC (点version 4.7.1, 32 bit).
NOTE: The codeblocks-12.11(mingw)-setup_user.exe will NOT request ADMIN rights and can be installed into write accessible folders only.
Trying to install to a folder like "Program Files" will result in an access error therefore.
Use this special installer if you do not have admin access on your Windows machine.
IF UNSURE, USE "codeblocks-12.11mingw-setup.exe"!(如果不确定就选这个)
上面内容的大致意思是,codeblocks有集成GCC编译器的(下面2个),也有不带编译编译器的(上面2个,编译器可以另外下载安装);如果你有本机管理员权限就从1、3中选择,只有普通权限就选择2、4。
官方网站上还说,如果你想下载安装即时更新版本,可以发现有 NOTE: There are also more recent nightlybuilds available in the forums or (for Debian and Fedora users) in Jens' Debian repository and Jens' Fedora repository. Please note that we consider nightly builds to be stable, usually.
其中nightly的最新的就可以访问: http://forums.codeblocks.org/index.php?PHPSESSID=na8eio6ofadclvfjaddev1dpv1&topic=18229.0 ,下载其中的文件,解压到同一目录下,点击主程序就可以运行。 forums 主页置顶的文章中有使用说明,其实CodeBlocks也是可以免安装的,
Code::Blocks是一个开放源码的全功能的跨平台C/C++集成开发环境。Code::Blocks是开放源码软件。其本身不提供编译功能,但能通过调用第三方编译代码,官网的集成编译器为mingw,这样可以简化安装过程。但是不能选择编译器版本...而Code::Blocks只是一个集成的开发环境,它的版本高低对编译过程没有多大的影响,而编译器版本的不同可能会有较大影响。在开发过程中要使用相对固定的版本,减少没有必要的出错。
MingW32是默认的编译器,不论是否安装的是集成了该编译器的CodeBlocks版本,下载地址 http://tdm-gcc.tdragon.net/ 均可通过Settings --> Compiler...打开如下图所示窗口:指定编译器程序的根目录,并可通过是否包含 Program Files 选项卡下列出的程序进行判断。如果你用的是VC++(这个版本还不支持VS2012),类似的设置一下。
编译的过程中,一旦用到中文输出,往往会有乱码现象。下面统一使用UTF-8编码,通过Settings --> Compiler...打开下面“图一”窗口,并结合上面图二说明一下。
1 和 2 选择及设置默认编译器。
3 设置程序执行输出时使用的编码(windows的命令行不支持UTF-8输出,这里是强制输出。因为常编写的控制台应用程序输出以及默认的输出程序是cmd.exe,就要在如图位置加上这句:-fexec-charset=GBK)
5 是上面图二的内容
工具栏中红框所示的5个快捷调试按钮是build(编译)、run(运行)、build and run(编译并运行)、rebuild(重新编译)、abort(取消)。右边的Build target是编译目标选择。
界面字体设置:Settings --> Editor...如图三
设置默认打开文件时使用的编码、设置默认编码、及其它:
选择一种编码,目的 -- 全局使用UTF-8
1 在Use encoding when opening files(打开文件时使用的编码方式),选择UTF-8
2 Use this encoding “As fallback encoding”(作为默认编码)
3 下面的复选框可以不选。
如果还是出现乱码,那么下面这个操作要记住。File encoding 下的“System Defaults”和“UTF-8”
“System Defaults”一般的windows中文版系统是指GBK(WINDOWS-936或GB2312),并且在CodeBlocks主窗口的状态栏有编码方式的显示,如下下图。
对于乱码问题,只需理解
1 文件的保存编码方式
2 打开文件时用的编码方式
3 输出程序是否支持这种编码方式(对应“图一”的 3 操作)。
总结,如果在“图四”中选择 WINDOWS-936 ,则基本不会出现乱码(保存、读取及输出会都一样为GBK)。
但,若选择UTF-8就问题多多,用支持编码方式查看的文本编辑器,如Notepad++,再次确定保存源码的文件(.cpp文件)的编码方式。再另存为UTF-8(或如上图用“File encoding 下的UTF-8”重写一下)。
通过上面的介绍,可以尝试创建一个简单的控制台应用程序,新建的程序会默认为一个简单的“Hello World”。
过程:
File --> New --> Project --> console application (下图)--> Go ,打开“console application”创建向导,
到这里选择 C++:
如下图操作,先指定保存目录,再输入工程名称:
Debug 和 Release 都选上,选任意一个也行。编译器也是在这里选择的,这里显示的是默认设置的。点击完成。
前面新建的Project 名称adfsd,双击main.cpp 打开右边代码区,点击正上方的工具按钮,编译、运行,在“信息显示区”可以看报告。也可以到工具目录下使用记事本查看.cpp文件。
下面附加一个简单的控制台应用程序代码,:
#include <iostream> using namespace std; int main(){ cout<<endl<<"\t\t\t\t\t"<<"九九乘法表"<<endl;//标题行 int n=90; for(int k=1;k<n;k++){ cout<<"*"; } cout<<endl; for(int i=1;i<10;i++){ cout<<"*"; for(int j=1;j<i+1;j++){ cout<<"\t"<<i<<"x"<<j<<"="<<i*j; } for(int k=1;k<12-i;k++){ cout<<"\t"; } cout<<"*"<<endl; } for(int m=1;m<n;m++){ cout<<"*"; } return 0; }
那,下面这篇是紧随其后的 wxWidgets 的相关,不妨花点时间:
http://www.cnblogs.com/hslog/p/hslog0004.html
转自:http://www.cnblogs.com/hslog/p/hslog0003.html
wxWidgets的安装编译、相关配置、问题分析处理
一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)
wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。相当于大家熟悉的 VC++。
参考介绍:
http://www.cnblogs.com/nokiaguy/archive/2009/01/27/1381071.html
二、wxWidgets的安装与编译:
二.1 基础部分
编译是少不了的操作,即使你下载的是安装包,因为这个安装包只是相当于自解压包,我们还需要将其进行编译,才能得到wxWidgets在Windows可用的库。
如果你在参考了许多编译文档或教程之后发现还是没有编译出某些库文件,如
wxbase28u_gcc_custom.dll
libwxmsw28ud_gl
libwxmsw28u_gl
libwxmsw28u_dbgrid
libwxmsw28ud_dbgrid
wxbase28ud_gcc_custom.dll
wxbase28u_gcc_custom.dll
(部分文件可能会有扩展名的缺少而不同)
这里使用的版本是wxWidgets 2.8.12(上面文件名中的28也是指这前两位版本号2.8,版本2.9的同理)
在本文发表之时,wxWidgets 2.8.12是当前的稳定版。如下,
Latest Development Release: 2.9.5
Current Stable Release: 2.8.12
Previous Stable Release: 2.6.4
下载地址:http://www.wxwidgets.org/downloads/
http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.12.zip (MSW=MS Windows)
先检查一下系统的环境变量中有无Mingw32(32位)的bin目录的值,集成安装的大致安装位置是 C:\CodeBlocks\MinGW\bin ,要用到的是其中的mingw32-make.exe 。
环境变量的设置,此外设置用户变量(系统变量要重启才行,并且对所有用户都有效),只要简单注销一下当前用户即可生效(而用path 命令设置有时不生效)。
在这里说一下,一般会用到的与本IDE设置有关的环境变量,
1 是编译环境用到的bin 目录,即大致类似于 C:\CodeBlocks\MinGW\bin
2 调用库文件时用到的编译完成后,放置生成的库文件的目录。这个目录下面会说到。
解压下载的压缩包,并进入 wxMSW-2.8.12\build\msw子目录,打开命令行切换到这一目录(或在这个文件夹空白处按住Shift,并右键,选择“在此处打开命令窗口”,直接进入)。因为前面设置好了环境变量(不论是用户级的,还是系统级的,最后,再打开cmd.exe,执行 path 检查一下是否添加成功)
编译时用到的命令,如果用它,就按下文件相关,修改 config.gcc 文件后,执行
mingw32-make.exe -f makefile.gcc (无参数,参数写在config.gcc中)其中的 -f 是 file,为mingw32-make.exe指定要编译的文件 makefile.gcc。
如果不写在配置文件中,则可以写成如下示例(只是动态库SHARED=1)
mingw32-make -f makefile.gcc BUILD=release SHARED=1 UNICODE=1 (release 版本)
mingw32-make -f makefile.gcc BUILD=debug SHARED=1 UNICODE=1 (debug 版本)
下面是完整的config.gcc文件内容,在看之前,请先略看,并跳到下面的内容,但在正式编译时,请细看下面内容,即使你用的是加了参数的编译方法,如上面2条命令,可能会无法编译出某些文件。图形界面开发,要考虑的地方很多,入门后,自然更加熟练:
# ========================================================================= # This configuration file was generated by # Bakefile 0.2.9 (http://www.bakefile.org) # Beware that all changes made to this file will be overwritten next # time you run Bakefile! # ========================================================================= # ------------------------------------------------------------------------- # These are configurable options: # ------------------------------------------------------------------------- #设置是否共享生成的库文件(先默认如下) # Compiler flags to link shared library LINK_DLL_FLAGS ?= -shared # Compiler flags to link loadable module LINK_MODULE_FLAGS ?= -shared #编译器(这个不能动,其它的编译器也有对应的 config.***文件) # C compiler CC = gcc # C++ compiler CXX = g++ #下面的几条,与编译时占用的CPU等系统资源有关,可能。 # Standard flags for CC CFLAGS ?= # Standard flags for C++ CXXFLAGS ?= # Standard preprocessor flags (common for CC and CXX) CPPFLAGS ?= # Standard linker flags LDFLAGS ?= # The C preprocessor CPP ?= $(CC) -E #静态库 0 、动态库 1 # What type of library to build? [0,1] SHARED ?= 0 #没了解(默认) # Build wxUniversal instead of native port? [0,1] WXUNIV ?= 0 #支持宽字符集,必须是1 # Compile Unicode build of wxWidgets? [0,1] UNICODE ?= 1 # Use MSLU library when building Unicode version. [0,1] MSLU ?= 0 #编译的二进制的类型:Debug、Release(这两个都要编译,方便以后用到) # Type of compiled binaries [debug,release] BUILD ?= release #这里说一下,下面的参数,能开的基本上都开了,但个别的会说明一下作用。 # Should debugging info be included in the executables? The default value # "default" means that debug info will be included if BUILD=debug # and not included if BUILD=release. [0,1,default] DEBUG_INFO ?= default # Should __WXDEBUG__ be defined? The default value "default" means that it will # be defined if BUILD=debug and not defined if BUILD=release. [0,1,default] DEBUG_FLAG ?= default #是编译分开的多个库,还是一个大的整体(如果选择1,会无法得到目标库,生成的库是以monolithic 为前缀的,而且很大) # Multiple libraries or single huge monolithic one? [0,1] MONOLITHIC ?= 0 #图形界面,少不了 # Build GUI libraries? [0,1] USE_GUI ?= 1 # Build wxHTML library (USE_GUI must be 1)? [0,1] USE_HTML ?= 1 # Build multimedia library (USE_GUI must be 1)? [0,1] USE_MEDIA ?= 1 # Build wxXRC library (USE_GUI must be 1)? [0,1] USE_XRC ?= 1 # Build wxAUI library (USE_GUI must be 1)? [0,1] USE_AUI ?= 1 # Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1] USE_RICHTEXT ?= 1 # Build OpenGL canvas library (USE_GUI must be 1)? [0,1] USE_OPENGL ?= 1 # Build ODBC database classes (USE_GUI must be 1)? [0,1] USE_ODBC ?= 1 # Build quality assurance classes library (USE_GUI must be 1)? [0,1] USE_QA ?= 1 # Enable exceptions in compiled code. [0,1] USE_EXCEPTIONS ?= 1 # Enable run-time type information (RTTI) in compiled code. [0,1] USE_RTTI ?= 1 # Enable threading in compiled code. [0,1] USE_THREADS ?= 1 #下面这个参数在前面如果设置了编译类型是Relesse是设置为1,Debug时为0(我在编译时,后者Debug为1时中断了) # Enable wxCairoContext for platforms other than Linux/GTK. [0,1] USE_CAIRO ?= 1 # Link with gdiplus.lib? (Needed for wxGraphicsContext, will also set wxUSE_GRAPHICS_CONTEXT) [0,1] USE_GDIPLUS ?= 1 # Is this official build by wxWidgets developers? [0,1] OFFICIAL_BUILD ?= 0 # Use this to name your customized DLLs differently VENDOR ?= custom # WX_FLAVOUR ?= # WX_LIB_FLAVOUR ?= #下面的大概是特殊设置 # Name of your custom configuration. This affects directory # where object files are stored as well as the location of # compiled .lib files and setup.h under the lib/ toplevel directory. CFG ?= # Compiler flags needed to compile test suite in tests directory. If you want # to run the tests, set it so that the compiler can find CppUnit headers. CPPUNIT_CFLAGS ?= # Linker flags needed to link test suite in tests directory. If you want # to run the tests, include CppUnit library here. CPPUNIT_LIBS ?= # Version of C runtime library to use. You can change this to # static if SHARED=0, but it is highly recommended to not do # it if SHARED=1 unless you know what you are doing. [dynamic,static] RUNTIME_LIBS ?= dynamic # Set the version of your Mingw installation here. # "3" ...... this is for Mingw 2.0 or newer (comes with gcc3) # "2.95" ... for Mingw 1.1 or any of the older versions [3,2.95] GCC_VERSION ?= 3
config.gcc 配置文件结束!!
相关知识:节选自 http://wenku.baidu.com/view/69b0272216fc700abb68fcae.html 本文不作过多修改。
动态库dll vs. 静态库lib
从编译结果上看,C++库可以被编译成“静态”链接库,也可以被编译成“动态”链接库。所谓“链接库”的意思就是,库自身并不可以被执行。应用程序才是可执行的,为了写一个应用程序,可能需要用到很多功能,其中一些功能,应用程序的作者并不用自己实现,而是直接使用链接库即可。把应用程序与库在功能上进行合并的过程,就叫做过“链接”。如前所有述,有两种链接方法:静态或动态。
所谓“静态链接”,就是直接把库文件和可执行文件合二为一,形成一个文件。这种情况下,发布可执行文件时,就不必另外附加那个功能库了;因为事实上那个功能库已经“嵌入”在可执行文件中(可执行文件的体积,变大了)。静态链接方法,适用于功能简单应用程序。
所谓“动态链接”,是指程序在运行时,才会去寻找动态库中所需要的功能,然后在内存中加载入动态库。这种情况下,可执行文件与动态库独立存在,没有合成一体,在发布程序时,你必须两个文件一起安装到用户的电脑上。动态链接方法,适用于相对复杂的应程序,通常这种情况下,为了方便用户安装,我们会提供一个安装程序。 另外,在Linux系统中,“动态链接库”通常被称为“共享库”(文件扩展名也改为.so);这也说出了“动态链接”这项技术带来的另一个好处:多个应用程序可以共用一个独立的动态库。
如果把盖房子想像成写程序的话,当我们需要建造其中的自来水系统时,可以把水库当成是一种功能链接库。那么,当我们是在乡下自建一座独门独户的小楼,那么可以采用“静态链接”的方法,即在自家楼里砌个水库,自个儿使用,当然这个自建的水库往往增加了小楼的体积。来到城里,城里的一座高楼住着千家万户,这时,“动态链接”技术派上用上,所有住户共享一个水库,当你需要水时,打开水龙头,水就从外部“动态”而来。
为了方便以后使用,今天wxWidgets将我们编译成至少两个版本,即动态库和静态库 ,debug 和 release ,2x2=4,其它参数不变。而在CodeBlocks的工具栏中“build target”可以选择你当前的编译类型,并且相关的信息,可能也与这有关,具体去分析,我们一个也不能少。
DEBUG vs. RELEASE
DEBUG 指“调试”版。表示编译出所库含有调试信息,这自然会让库变得很大,但有利于我们写程序时跟踪也发现错误。
RELEASE 指 “发行”版。表示我们认定程序写得差不多了(能解决的问题都解决了,错误相对比较少),这时调试信息就不需要了,库恢复它原来的大小。
为了方便调试与发而程序,DEBUG和RELEASE,同样的,我们一个也不能少。
UNICODE vs. 非 UNICODE
传统C++程序中,对普通的1个英文字符采用1个字节表示,而对1个汉字采用两个字节表示。比如有这样一句话:
“文件c:\abc\efg\我的文档\奥运知识ABC\乒乓球基础知识.txt无法打开!”
假设计数以0开始,那么例子中那句话,第0个字符是“文”字的前半个字符,第1个字符则是“文”字的后半个字符。事实上半个汉字是没意义的,它只会为字符串处理上带来困难。比如,假设我们要把上述那句话显示在显示在某个窗口上,但由于窗口太小,显示不下这时我们希望将那句话的截掉一点,结果类似:
“文件c:\abc\efg\我的文档\奥运知识ABC\乒乓球基...”
这个过程看似简单,但其实复杂,如果不进行特殊的处理,程序很要可能会在某个汉字的半个字符处截断那句话,而1个汉字一旦被“腰斩”了,剩下的那个半个汉字,无论是上半身还是下半身,就会在屏幕上显示乱码。
解决这个问题,方法有很多种,其中采用“UNICODE”是个相对通行而简单的办法,并且解决得比较彻底。“UNICODE”的方案说起来也简单,就是用两个字节甚至四个字节去表达一个字符(无论是英文字符还是中文、日语等)。
相关知识 结束!
二.2 目录知识
要处理汉字,所以在编译过程,我们只选择UNICODE的方案,故会编译 4 次。每次30分钟左右,计算机配置高的话,可以同时进行两次。由于只是需最终编译的库,推荐的方法是,将目录 wxMSW-2.8.12/ 复制4份,每一份均作相应的编译。 然后将目录进行合并,我们最终需要的不是build目录下的文件,而是程序根目录 lib 中的库文件。参考下面的表格,就能得出库文件的命名机制,见表格中的【注】,所以4次编译不会出现库文件重名,只是相似。
编译完成后,在msw目录下生成的目录如表格,返回到 wxMSW-2.8.12\lib 目录,我们发现多了 gcc_lib(静态)或gcc_dll()动态
库类型 静态=0 动态=1 | 编译时下面目录下会生成子目录 wxMSW-2.8.12\build\msw\ | 编译时下面目录下 会生成子目录 wxMSW-2.8.12\lib | ||
Unicode | debug | 动态 | gcc_mswuddll | gcc_dll |
静态 | gcc_mswud | gcc_lib | ||
release | 动态 | gcc_mswudll | gcc_dll | |
静态 | gcc_mswu | gcc_lib | ||
上面3项知识详见下文 | 【注】:gcc_msw(gcc编译的windows库), u=unicode,d=debug,dll=动态, lib=静态(略写),r=release(略写) | gcc_dll的目录下有 mswu 或 mswud gcc_lib的目录下有 mswu 或 mswud |
相关目录及操作 的截图参考:
1 编译过程,刚刚开始,即被我无情 Ctrl + C 终止。提示,编译前要先考虑是否如上面示例修改 config.gcc 文件。时间:30分钟左右。
2 msw 目录下的两个主要文件 :配置 - config.gcc、及 makefile.gcc 。目录 gcc_mswu 在编译之前不存在(显然这是编译的 Unicode + 静态库 + Release)
3 lib 目录下编译后的文件目录结构,目录“_sc”及下面的3个文件在不同的编译条件下不会变化。这里要提到的是前面在环境变量部分没有讲完的第2个环境变量,虽然不是必须,但是这种解决问题或排除程序报错的方法是很重要的。参考下面的图片,一一说来。
4 进入上图的 gcc_lib ,里面的目录结构如下图,包括各种 (Unicode + 静态库 + Release),其中的 mswu 目录下的文件有时也会因为缺少而报错,比如其子子目录中的 setup.h 。
5 如果大家采用我的方法,将静态库、动态库分别合并到 gcc_lib 及 gcc_dll ,下图就是相应结果:
关于此处涉及到的环境变量问题在这里细说一下,按照下图的库文件放置方法在编译时会报错,大多是找不到某某文件,而你到这个目录下查找,却发现文件在那呀!
CodeBlocks 创建 Project 时会的步骤要求你选择 wxWidgets 的存放目录,编译时编译器就会从这个目录下找 lib 下的库文件,但不会找子目录下的文件。因而,如下图放置库文件,会提示缺少相关文件。那么,怎么办?有两种办法。
1 将 gcc_lib 及 gcc_dll 加到环境变量中
2 直接把 gcc_lib 及 gcc_dll 里面的文件及目录全部移动到 lib 根目录下。不上图了,移动时不用担心文件或目录重名。
这种方法是重点:前提是你编译出了这个文件,编译时提示找不到某文件,就将其放置在环境变量中。其实初期使用时担心的都是缺少文件的报错,这你真心没办法。So,花点时间在编译工作上吧,没有坏处的!!
三、供参考的相关资料:
http://blog.sina.com.cn/s/blog_5dbdcfc701013kiw.html
http://wiki.codeblocks.org/index.php?title=WxSmith_tutorial:_Hello_world (图形界面重点入门参考,全英文。虽然,与本篇版本不同,但不出错。用 wxFormBuilder,就不如用集成的wxSmith,知其一,则知它们)
四、相关问题罗列:
1 编译器版本与库文件的关系,前面也有提到,如果使用了别人编译的库,最好就要用编译这个库使用的编译器版本,即使只是版本号不同。这里也发现为什么linux下提供的程序多为源码,使用时需要编译,有编译器版本与库文件不对应的原因,就像一台组装机,必需要考虑硬件不兼容问题。而这个问题在windows及MacOS下很少,因为这些平台下的程序所需调用的库大多内置在了程序中。虽然体积会大点,却得到了体验。回想一下,桌面版本linux 六个月一次升级,大多数程序都要同时重新编译,拿播放器 VLC 来说,在Fedora 上就要为是Fedora 18 及 Fedora 19 而分别编译发行版本(这个可能会不用在本机编译了);而服务器版Linux很少升级,是为避开这个问题,服务器上的各种服务器软件,怎么能够奔命于编译、编译、再编译的过程,而连基本服务都没做好。导致原因,不能与它的自由,开源脱开关系。所以,Linux会有那么一个阶段,分久必合,大家坐下来 制定一个ISO标准,这为的是长远发展,但不能失去了它的根本:自由、开源。我曾经与朋友打了这么一个比喻,linux像组装机,各种配件,自由搭配,只要没有兼容性问题;Windows 则是品牌机,办公、影音、游戏,应有尽有。物尽其用,最终提供服务的是应用程序,而它们跑在系统的大车之上。
2 64位 或 32位 系统的影响,虽说,用的是32位的编译器,可编译出来的程序在我64拉win7上部分效果不能实现,而拷贝到32位win7上,运行良好(如果缺少文件,就在本机上复制它到目标电脑system32目录,这个目录是系统默认加入到环境变量中的)。不过可能只是一面之词,毕竟只是我一台机子上的现象,而我的电脑用运行着 HIPS (Comodo防火墙内置)
3 网上有一种 wxpack 是库文件编译好的,但现在新版本的没有编译了,vc++、gcc编译都有,安装后数个G的体积,但问题是还是会出现这里列出的第 1 条问题,而且那个版本的编译器不容易配置。
4 这一条不是什么问题,而是在 wxMSW-2.8.12 根目录,有一个 samples 子目录,里面存放的是图形界面的若干个源码示例,没错,需要编译。在 samples 目录下也有一个 makefile.gcc,编译就像编译库文件一样 ,命令行下切换到这下目录,使用命令 mingw32-make.exe -f makefile.gcc 只是这个 makefile.gcc 是全部编译 samples 目录下的所有工程示例(一个子目录就是一个工程)。
而单个编译时,要进入相应工程目录,同样有 makefile.gcc 文件,操作同上,可能并不是每个都能编译成功。编译成功的对应目录下会有 gcc_mswu 其中有对应的 exe 可执行文件,并拷贝到其它电脑运行一下。
示例 calendar
示例 aui
wxWidgets 工程的具体创建过程本文不作叙述。
CodeBlocks 安装相关参见:http://www.cnblogs.com/hslog/p/hslog0003.html
文中部分内容可能会有所不同,请以操作为准,如果希望本文更加完善,请告知相关内容,并在此对文中引用的文章的作者表示感谢;
跨平台C/C++集成开发环境-Code::Blocks-内置GCC
Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境.
相比于基于Delphi的Dev-C++共享C++IDE,Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢,再也不必忍受VS.NET的庞大和高昂的价格。
虽然Code::Blocks从一开始就追求跨平台目标,但是最初的开发重点是Windows系统下的版本,从06年3月21日版本:1.0 revision 2220开始,Code::Blocks在它的每日构建中正式提供Linux版本(分两个版本:ubuntu.deb和fc4.rpm)。这样 Code::Blocks在1.0发布时就会是跨越平台的C/C++IDE,它将支持Windows和Linux的主要版本。长期以来C++开发员在 Linux没有好用、通用的C++ IDE的局面就要结束。而这个IDE对于Windows下的用户同样重要,由于它开放源码的特点,Windows用户可以不依赖于VS.NET,编写跨平台C++应用。
Code::Blocks提供了许多工程模板,这包括:控制台应用、DirectX应用、动态连接库、FLTK应用、GLFW应用、Irrlicht工程、OGRE应用、OpenGL应用、QT应用、SDCC应用、SDL应用、SmartWin应用、静态库、Win32 GUI应用、wxWidgets应用、wxSmith工程,另外它还支持用户自定义工程模板。在wxWidgets应用中选择UNICODE支持中文。
Code::Blocks支持语法彩色醒目显示,支持代码完成(目前正在重新设计过程中)支持工程管理、项目构建、调试。
Code::Blocks 支持插件,目前的插件包括代码格式化工具AStyle;代码分析器;类向导;代码补全;代码统计;编译器选择;复制字符串到剪贴板;调试器;文件扩展处理器;Dev-C++ DevPak更新/安装器;DragScroll,源码导出器,帮助插件,键盘快捷键配置,插件向导;To-Do列表;wxSmith;;wxSmith MIME插件;wsSmith工程向导插件;WindowsXP外观。
Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、 Fortan77文件、GameMonkey脚本文件、Hitachi汇编文件、Lua文件、MASM汇编文件、Mathlab文件、NSIS开源安装程序文件、Ogre Compositor脚本文件、Ogre Material脚本文件、OpenGL Shading语言文件、Python文件、Windows资源文件、XBase文件、XML文件、nVidia cg文件。识别Dev-C++工程、MS VS 6.0-7.0工程文件,工作空间、解决方案文件。
Code::Blocks 基于wxWidgets开发,正体现了wxWidgets的强大。以前Borland C++ Builder X宣称基于wxWidgets开发跨平台、兼容性好、最优秀的C++ IDE环境,但没有实现;现在Code::Blocks+GNU GCC正在实现这个理想。让我们拭目以待。国内的Code::Blocks爱好者和跨平台开发员应该尽快建立中文Code::Blocks网站,提供 Code::Blocks中文化支持,促进Code::Blocks在国内的发展。
Code::Blocks,有时也简单打成“CodeBlocks”,是一款全新的C++集成设置环境软件(IDE)。
作为一款C++的IDE,Code::Blocks至少有以下几点非常吸引我。
开源——开源不仅仅意味着免费,但就算是仅仅是免费这一点,就非常重要了,不是吗?
跨平台——我的工作需要写的C++程序,就要求是跨Linux和Windows平台,没有选择Code::Blocks之前,我在Linux下用 KDevelop,在Windows下使用Borland 或 Microsoft的软件,由于二者不兼容而要多做的事情太多。或许你暂时并不考虑跨平台,但为了将来,能跨平台总不是坏事,对了 Code::Blocks也支持Mac系统呢。
纯C/C++写成——作为一名C++程序员,我“顽固”地保留一点可能并不必要的自尊:写C++程序,还是用C++写的IDE吧。让我选择一款以其它语言写成的IDE来写C++程序,我有那么一点点完全不必要的心理障碍。其实用C++写的程序最大好处是你不用额外安装庞大的运行环境,譬如你不用装.net也不装java。
支持多编译器——包括Borland C++,、VC++、Inter C++等等超过20个不同产家或版本编译器支持。无特定要求下,我还是主要用g++。配对的,调试器也是支持多种。
插件式的框架——插件式的集成开发环境,最著名的是Java编程工具Eclipse了,这种方式让一款IDE保留了良好的可扩展性,应该说,作为一款开源的 IDE,这是最合理的选择。Code::Blocks很多核心功能,包括“调试功能”,都通过插件来实现。非核心方面的插件嘛,我用得最多的,是代码格式美化、自动上Google Codes查找……偶尔也会玩玩“俄罗斯方块”以及“贪吃蛇”……
经常更新——几乎每个月都会有更新。开源软件最怕的就是不更新了。
内嵌可视设计——和大家熟悉的VB、Delphi/C++Builder相比,它的可视窗口设计器,其“傻瓜性”差了一大截,其主要原因在在主流的跨平台图形窗口的定位体系,都是采用定位“容器”来实现的,这一点一开始会不太习惯,但在熟悉之后,设计各种对话框,也非常直观。一点点不直观,换来的是你的程序很容易迁移到别的操作系统,同时还让你对窗口设计更深入了,倒也值。
C++扩展库支持——通过它的一个用以支持Dev C++的插件,可以下载大量C++开源的扩展库。比如网络操作,图形算法,压缩、加密等等……我现在最常用到一款就是iconv,用来转换汉字编码。扩展库下载,及使用方法,请见本站相关课程。
多国语言——哈哈,有中文版,支持近40国语言,不过并不是默认支持的,本站对相关语言包进行了部分订正及改进,语言包文件下载及使用方法请见本站相关课程。
转自:http://www.cnblogs.com/hslog/p/hslog0002.html