1、VIM
首先要说的是VIM。我认为,VIM只是一个编辑器,不能算是IDE。虽说VIM有很多插件,例如代码折叠、递进等,可以将VIM组建成几乎类似一个
IDE,但始终它不是专门的IDE,所以在功能支持上还是远不如那些专门的IDE如:eclipse和code::blocks(这个是本文最后介绍也
是我想向大家推荐的IDE)。用VIM+GDB来编写和调试C++程序是很“痛苦”的一件事,友情提示,如果你不是一名unix hacker的话,不
要用VIM当作你的C++ IDE。不过,VIM有它的好处,它作为一个编辑器,当你通过SSH连接到远程服务器上、修改一些配置文件或者对代码进
行“微调”时是非常有用的。
这里再补充说一点,我所说的unix hacher并不是大家平时理解的破解系统、攻击别人电脑的那些人(我认为应该称他们cracker),我认为的
hacker是类似Richard Stallman、Linus Torvalds这些技术很强、喜欢通过自己思考并编程来解决复杂问题的人(大家应
该都听过Stallman关于打印机驱动的故事吧)。
2、Emacs
Emacs是Stallman大师的杰作,刚一接触就被它所吸引。不管是Emacs的拥护者还是反对者,都不得不承认Emacs非常优秀,Emacs远
远超过了一个IDE,而是一个基于编辑环境的OS。Emacs有很多很好的特性,就算现在很多出名的IDE都无法比的,比如:内嵌Lisp函数式语言。
Emacs有种种优点,但是作为一个起源于unix系统并且是几十年前设计的IDE,对于今天的我们来说,可能会有很多不习惯的地方。比如快捷键就是其
中之一:比如复制和粘贴,很多WINDOWS软件和 Linux软件都用的是CTRL+C和CTRL+V,而Emacs使用的完全不同,是CTRL
+SPACE和ALT+W是复制,CTRL+Y是粘贴。更重要的是,Emacs也需要插件才能实现C++IDE的功能。并且觉得Emacs的风格有点
像“上个世纪”的东西,所以我觉得如果你不是一开始就用的 Linux系统、如果你已经习惯了现在的编辑环境,那最好还是选一个当代的IDE,因为这个
用起来更习惯一些。
3、Eclipse
Eclipse是一个很优秀的JAVA做的IDE,在SUN和IBM公司的支持下,Eclipse确实做得相当优秀。虽然我不会java,没有用
Eclipse写过java程序,而是用Eclipse来写PHP,但是也能体会出 Eclipse的优秀。并且它的插件功能也做得非常棒,网上有很多
关于它的介绍,我就不在多说了,因为,它也不是我今天想向大家推荐的C++IDE,主要原因是——速度慢、体积大。还有就是没用它调试过C++,所以不
知道到底如何。
4、Code::Blocks
今天想向大家隆重推荐的一个跨平台的C++IDE就是——Code::Blocks。它是基于 wxWidget库的程序。首先,因为它就是用C++开
发的,所以在速度上明显比Eclipse快。其次,因为是一个专门的C++IDE,所以在配置方面也非常符合C++开发的习惯,功能几乎可以和
VC2005/2007媲美。最后,它还是一个开源的IDE,并且它的体积比Eclipse和VC小了不止一个数量级——整个压缩后的源码包只有6M
多!
其实说实话,我也是刚开始用Code::Blocks,但是我敢负责任的说,它真的很好。以前编程和调试都一直在VIM、Emacs和gdb里挣扎,命
令方式的GDB调试把握折腾的都崩溃了。突然接触了Code::Blocks以后,马上让我找到了当前用VC编程和调试的快乐的感觉。就是前几天,我在
GDB下调试一个C++程序时的不便,尝试了DDD还是觉得不方便,于是偶然间试了一下Code::Blocks,一会的时间问题就解决了。虽然它使用
的还是GCC+GDB,但是它对其包装以后使我使用起来感到了极大的方便(尽管和是没有VC调试起来这么好用)。
更多的介绍我不想说了,既然它这么小,并且各大流行的OS下(windows、mac os x、redhat、Ubuntu...)都有已编译好二进
制版本,你何不试试呢?它的官方网站是:www.codeblocks.org
最后总结一下:VIM是每一个Linux程序员都必需会的东西,非常值得学习和熟练使用,但是你不必用它来当作你主要的C++IDE。Emacs感觉上
有点和当代软件风格不一样,等你到达一定层次以后自己再决定是否学习使用它。 Eclipse可能更适合JAVA爱好者使用,虽然速度没有慢到无法忍
受,但是总有点让人心里感觉不是太爽。而我强烈推荐大家试试 Code::Blocks,相信你会向我一样一下子就被它所吸引。
Code::Bolck的确是一款值得大书特书的C++ IDE,免费、开源、极强的自定义能力、体积小、资源占用少、速度快……在我试用了包括
Eclipse、Dev-C++等一系列著名的IDE之后,最终决定使用它。
不可否认Eclipse是一个不错的IDE,但它是为JAVA而生的,虽然利用插件同样可以用来开发C++,但是在代码提示方面几乎无法让人忍受,而且
体积过于庞大,加上JAVA,光安装文件就达到了200多M,而Code::Blocks才不到4M。而最让我动心的是它的代码提示的速度几乎可以跟
VC相媲美,而且居然连QT的代码都可以提示出来,虽然还不是很完美,但已经比其它任何IDE都有了一个质的提高。
在Eclipse中开发QT很不方便,充其量只能算得上一个代码编辑工具,还需要到命令行中进行编译,虽然也可以通过设置直接在IDE中编译/运行,但
每个项目都要重新设置,十分的麻烦;而Code::Blocks几乎可以完美的集成到IDE中,通过自定义工具,可以不用脱离IDE就完成编译,十分方
便。
在Code::Blocks中编译QT程序有两种办法。
第 一种,在Tools中增加三项,分别调用qmake -project、qmake、nmake。直接调用name时,打开的控制台窗口在编译完成
后立刻关闭,看不到编译信息,好在Code::Blocks提供了console_runner.exe这个工具,提供类似控制台的命令,但是在执行之
后不会自动关闭,而是在按任意键后才返回,让我们有机会看清楚编译信息。
这种方法可以让我们不用脱离IDE就完成编译,但是出现的控制台窗口让人感觉不是太好,我曾写过一个程序将编译的信息重定向到我的程序中,然后再弹出一
个窗口来显示编译信息,但终究跟IDE的结合不够自然。
第 二种方法则可以完全将编译信息集成到IDE中。首先在新建项目时必须“QT Application”模板,然后再Project的Option中
选中 “This is a custom Makefile”,让Code::Bolcks使用自定义的Makefile;再点击
“Project's build options”按钮,选“Default”->“Commands”,在“Pre-build steps” 中
输入qmake -project(换行),qmake;再到“Settings”->“Compiler”->“Other”中将 Build
method设置为“Work with Makefile”。按道理,经过这样的设置之后就可以直接用IDE中的Build命令去编译QT 项目,并
可把编译信息显示在“Build log”和“Build message”窗口中了,但是,Code::Block存在着一个Bug,就是当
Build method设置为“Work with Makefile”时,Option中的“This is a custom
Makefile” 选项是无效的,也就是说它并不会根据Makefile来编译,这个Bug已
经在Code::Block社区得到了证实,社区里头有人提议在第一次 编译的时候将Build method设置为“Invord
compiler directly”,编译后就会生成Makefile,然后再改回 “Work with Makefile”来进行以后的编译,但
我觉得这样比较麻烦,还是比较喜欢象第一种方法那样先执行一次qmake - project和qmake,这样就不用切换来切换去了。
需要注意的是,在新建项目的时候,选择的项目模板对编译是有影响的,只有选择了QT Application才可以使用第二种办法编译,而第一种方法则
没有此限制,即使是选择了Console Application模板仍然可以正常编译。
在IDE中执行Run命令需要注意一点,调用qmake和nmake后生成的Exe文件是与项目所在的目录名同名,而IDE中的Run命令会去找跟项目
名同名的EXE文件,所以如果想用IDE中的Run命令,就必须将项目名设置成跟目录名一样才行。
8.02版本的windows下安装程序自带MinGW,版本还是比较新的。安装目录最好是跟目录下,安装路径中不能有空格和中文字符,否则很可能不能
调制。
设置环境变量,添加mingW目录下的bin目录到path 环境变量。
2。编译安装wxWidgets
在http://www.wxwidgets.org/下载wxMSW的zip压缩,解压缩到C盘。比如C:\wxWidgets-2.8.9。打开
CMD命令行进入C:\wxWidgets-2.8.9\build\msw输入以下命令:
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1
BUILD=release UNICODE=1
shared 是是否为动态库,build是生成版本,有debug和release,命令行参数请查阅相关文档.
耐心等待10-30分钟…….
如果中途停止则删除C:\wxMSW-2.8.8\lib\gcc_dll\mswu\wx下生成的setup.h
3。设置wxWidgets环境变量
1.设置-环境设置-环境变量添加一个新变量。key=wxwin,value=C:\wxWidgets-2.8.9
2.设置-全局变量-当前变量-添加一个新变量wx,有的话就不用添加了,base=${wxwin},include=${wxwin}
\incluse,lib=${wxwin}\lib.关闭。
3.设置-编译和调试-搜索路径-编译器添加新路径为MinGW路径下的include路径,如D:\codeblocks\MinGW
\include,连接器同上只是改成lib,资源编译器同编译器设置。
OK了,编译的时候提示缺什么东西就直接添到这三个里边就是了
1、post-RC2 build 的codeblocks软件
例如codeblocks-8.02-setup.exe,不含mingw
因为早期的Code::Blocks RC2不支持全局编译变量
2、MinGW 编译器
Code::Blocks 只能在 MinGW 编译器或其他gcc下编译成功
(1)MinGW installation
下载MinGW-5.1.3.exe,安装current版本。"MinGW Base Tools", "g++ compiler"
和"MinGW make"是必须安装的。也可以单独下载然后解压至根目录下的mingw下,也可用其他的路径和文件夹名字,但避免使用空格和非字符,
因为会是一些命令行应用程序感到困惑,例如gdb.exe
(2)设置环境变量
右键我的电脑,选择属性,高级选项卡,环境变量按钮,在xxx的用户变量中选择path,如果没有可以新建一个,在弹出的编辑用户变量对话框中分别填
入“path”,“C:\mingw\bin;C:\mingw\mingw32\bin;”,注意“;”为半角
(3)验证环境变量
开始-à运行-à输入cmd,回车-à在DOS命令框中输入“path”和“ming32-make”看到如下效果即安装正确:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\piter>path
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:
\Program Files\SlikSvn\bin\;C:\mingw\bin;C:\mingw\mingw32\bin;
C:\Documents and Settings\piter>mingw32-make
mingw32-make: *** No targets specified and no makefile found. Stop.
C:\Documents and Settings\piter>
3、wxWidgets 压缩包
(1)下载wxMSW-2.8.8.zip
(2)解压至根目录文件夹
4、SVN client
(1)下载软件
可以下载安装TortoiseSVN或者是svn command-line client,建议安装svn command-line
client
(2)安装svn command-line client至默认目录下
(3)设置环境变量
5、zip.exe
将zip.exe 复制到mingw/bin下
6、Code::Blocks 版本控制
以svn command-line client为例
在命令行下输入如下命令:
mkdir codeblocks-head
cd codeblocks-head
svn checkout svn://svn.berlios.de/codeblocks/trunk
然后就是耐心等待………
二、Building
有Unicode Build 和 ANSI Build 两种形式,推荐用前者。
1、编译wxWidgets
(1)检查mingw/bin和mingw/mingw32/bin是否已在“path”中。
(2)切换到DOS命令行
(3)使用cd命令切换到C:\wxMSW-2.8.8\build\msw下,输入如下命令:
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1
BUILD=release UNICODE=1 clean
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1
BUILD=release UNICODE=1
耐心等待10-30分钟…….
如果中途停止则删除C:\wxMSW-2.8.8\lib\gcc_dll\mswu\wx下生成的setup.h
2、编译Code::Blocks
(1)打开\codeblocks-head\trunk\src下的CodeBlocks.cbp,编辑全局环境变量wx至编译后的
wxWidgets目录,点击编译,等待3-5分钟。
(2)将wxWidgets目录中的lib\gcc_dll\wxmsw28u_gcc_custom.dll复制到Code::Blocks原代码文
件的src\devel下
(3)运行src\update.bat
(4)output文件夹下会产生最终的应用程序codeblocks.exe ,它便是我们要的
(5)卸载最初采用二进制文件codeblocks-8.02-setup.exe安装的codeblocks应用程序
3、编译所需插件
(1)打开ContribPlugins.workspace ,配置cb全局变量至sdk的安装目录,这里是src目录,编译你要使用的插件
(2)再次运行 update.bat