Page 1 of 2

CodeLite可以媲美Code::Blocks

Posted: Sun May 03, 2009 4:18 am
by Loaden
CodeLite简单就是为wxWidgets/wxFormBuilder用户量身打造!
当然,也可以用在普通的C++工程或C工程中。

亮点:
1. 代码自动完成功能很强大
2. 仿VS,很容易上手
3. 界面更友好

Posted: Sun May 03, 2009 4:34 am
by Loaden
CodeLite简单就是为wxWidgets/wxFormBuilder用户量身打造!
当然,也可以用在普通的C++工程或C工程中。
亮点:
1. 代码自动完成功能很强大
2. 仿VS,很容易上手[separator]
3. 界面更友好
4. 与Subversion集成
5. 与wxFormBuilder集成
6. 函数跳转功能强大
另,自动完成功能依赖于Tags,可以选择目录让codelite自己建立 函数的索引文件;要是觉得它的Tools Bar太大用的不爽的话Settings-> Misc -> Tool Bar use small icons,顺便把 Use Single 勾上。

几个常用方法如下:
1.ctrl+shift+r 在工程中快速打开文件,只需输入文件前几个字母即可
2.ctrl+shift+t 在工程中查找symbol
3.ctrl+shift+f 在工程中搜索,也可指定搜索的文件夹
4.点击工具栏的“highlight word”按钮,这样当鼠标选择文本中的word时,相同的word将被高亮显示,对跟踪变量很有用
5.设置字体,只需设置“global font”,其他字体依赖于global font
6.建立工程,代码的根目录对应workspace,每个子目录对应一个project,这样可以避免codelite建立tags库速度慢的缺点

自由软件的好处就是想到的功能他就会加上,不像商业软件,某些必需的功能,压着迟迟不发布,用户只能一版一版地升级,耐心地等待其把功能加全,我不知道 ue 哪个版本才会把#if 0语法支持的功能加上。我预言codelite将是一个标志性软件,相当于又一个firefox,很快就会流行起来。

其主页可能被和协了,不过可以通过免费在线代理来访问:
1. 输入:http://www.unblockprox.com
2. 访问:http://www.codelite.org
CodeLite已经进入Ubuntu 9.04的源,而Code::Blocks没有。

总体上感觉,Code::Blocks做的泛而不精;CodeLite做的精而不泛,大家各取所需吧。

Posted: Tue May 05, 2009 6:26 am
by murusu
这里就可以下载了
http://sourceforge.net/projects/codelite/

刚刚试着用codelite编译以前写的代码,立刻程序出错退出=.=b

Posted: Tue May 05, 2009 12:01 pm
by Utensil
谢谢Laoden的分享~ :D

-Utensil

Posted: Wed May 06, 2009 5:23 am
by ollydbg23
谢谢分享!
但是我感觉还是没有codeblocks好用。我在想,什么时候,把codelite的tag功能集成到codeblocks,那样子codeblocks就牛了,因为目前的codeblocks的代码补全的分析语法,还是多少有些问题。其实很多代码,不需要每次打开项目的时候都自动分析一遍的,很浪费时间的。

Posted: Wed May 06, 2009 12:21 pm
by JenT
ollydbg23 wrote:谢谢分享!
但是我感觉还是没有codeblocks好用。我在想,什么时候,把codelite的tag功能集成到codeblocks,那样子codeblocks就牛了,因为目前的codeblocks的代码补全的分析语法,还是多少有些问题。其实很多代码,不需要每次打开项目的时候都自动分析一遍的,很浪费时间的。
我也是這麼覺得。 :lol:

Posted: Wed May 06, 2009 3:42 pm
by ollydbg23
codeblocks的codecompletion功能,我基本都看懂了,而且写了个wiki,其实总体来说,还是很不错的,我也给开发人员发过patch,总体来说还是很不错的!

看这里:

http://wiki.codeblocks.org/index.php?ti ... ion_Design

Posted: Thu May 07, 2009 1:01 am
by Utensil
ollydbg23 wrote:codeblocks的codecompletion功能,我基本都看懂了,而且写了个wiki,其实总体来说,还是很不错的,我也给开发人员发过patch,总体来说还是很不错的!

看这里:

http://wiki.codeblocks.org/index.php?ti ... ion_Design


拜读完了楼上的wiki,写的实在太好了!而且这个wiki提供了很多很有用的相关资源,我也基本上浏览了一遍。

不过奇怪的是,自从06年左右,就再也没有听说关于code-completion重写之类的事情了。不知ollydbg23是否了解发生了什么?

如果重写的事情的确搁浅了,如果任何人想要改进code-completion,都应该在现有的框架下进行?从wiki来看,这个框架似乎设计的还是很不错的,那么
ollydbg23觉得C::B的code-completion目前的弱势主要集中在什么方面,而这些方面又与哪些类/方法相关?如果能有一个code-completion的改进的guide,那会非常利于大家参与。

个人觉得,如果能有一个新的interface,支持旧的compleion,而且还可以支持其它的complete方式作为backend,如ctags,那就好了~

忍不住再说一次,ollydbg23的wiki写得实在太好了!=D>

-Utensil

Posted: Thu May 07, 2009 5:53 am
by ollydbg23
to Utensil 大牛:

首先感谢你对我的评价,其实我当时看code completion的代码是有原因的。我目前在管理 OpenCV china 的新兵版面。

http://www.opencv.org.cn/forum/viewforum.php?f=1

但是,我在codeblocks下面使用 OpenCV 的时候,发现OpenCV里面的很多函数,它居然不认识,这下让我很是不满,我想一定是他的什么东西有问题,于是我看是研究code completion的代码了。

我本来不是计算机专业出身,一开始遇到了很多问题,比如我一开始连什么叫做 token 都不知道,于是就是 wikipedia上面看一些资料,然后分析代码。后来就基本看懂了,它里面有所谓的 语法分析器和句法分析器等等概念。这些东西可能一个计算机科班出身的人看起来是很容易的事情,呵呵。

大概看懂了语法分析之后,我就开始看它的token的存储结构,到底是怎么存储的,虽然比较困惑,但是这个数据结构大概也看懂了,就是一个tree的结构。

接着我就着手修改了里面的代码,这样子,我就可以漂亮的在codeblocks里面识别所有OpenCV的代码了。(我在codeblocks上面发布过一个patch,我自己电脑上面早就在用了,但是cb的开发者一直没有放入trunk里面)

至于写英文的那个wiki,我想我还是有必要让大家知道当前这个结构的,毕竟自己一个看懂了,分享给大家,才可能让更多的人来帮助和改进codecompletion的功能。

我想说的是,codeblocks里面的codecompletion的功能,主要在处理“宏”上面,还是会有很多问题,因为C语言的“宏”的存在,使得编译过程前多了一个“预编译”的过程,但是code completion扫描代码的时候却不太可能这么干,要不然它太浪费时间了。

这样一来就导致code completion的语法分析多少受到很多限制,特别是遇到很多稀奇古怪的“宏”的时候,就识别不了了。另外一个方面,我也觉得应该学习一下codelite,没有必要每次打开一个项目,都需要重新把所有相关代码都扫描一遍,这还是很浪费时间的。

这一点,用ctag的方式,生成一个所谓的tag数据库应该是一条不错的方法。

cb论坛上面目前cc停止开发的原因,我也说不上来,也许人力有限,也许还是很有技术难度的。(在我看来,移植一套codelite的codecompletion的功能应该不是很麻烦,至少对于目前的这些开发者来说)。

话又说回来,目前的codeblock我觉得已经挺不错了,至少我目前学习和使用调试OpenCV,没有任何问题!

说起来,我对于wxWidgets完全是新手,还是仰仗着 Utensil 的不少有用的帖子,才有所收获的。

也感谢大家!大家共同提高!

Posted: Sun May 10, 2009 2:26 pm
by Utensil
大牛实在不敢当~一只小蜗牛~很不负责任的一个版主~呵呵~
我本来不是计算机专业出身....这些东西可能一个计算机科班出身的人看起来是很容易的事情,呵呵。
我也不是计算机专业出身哦~握个手~
接着我就着手修改了里面的代码,这样子,我就可以漂亮的在codeblocks里面识别所有OpenCV的代码了。(我在codeblocks上面发布过一个patch,我自己电脑上面早就在用了,但是cb的开发者一直没有放入trunk里面)
能不能够给出这个patch的地址?这样大家都可以应用~
这样一来就导致code completion的语法分析多少受到很多限制,特别是遇到很多稀奇古怪的“宏”的时候,就识别不了了。
其实宏是否展开来进行语法分析,是需要智能抉择的:有些标识性的宏是不应该展开(往往展开后是空宏),条件编译的识别是一个难点,当内联函数用的宏当然应该展开并分析,事件表的宏又不应该展开。我理想中的IDE对这些都能处理好~不熟悉ctags,不知ctags处理的如何~
没有必要每次打开一个项目,都需要重新把所有相关代码都扫描一遍,这还是很浪费时间的。这一点,用ctag的方式,生成一个所谓的tag数据库应该是一条不错的方法。
赞同~

cb团队可能对CC没有形成一致的意见吧~改变现有的代码是比重新写还要困难的~

我有一个想法,不如我们在GitHub上面建一个这个plugin的分支,开始改善它~

Posted: Sun May 10, 2009 3:25 pm
by ollydbg23
今天没有太多的时间回复,睡觉了。。。

patch应该在这里,搜索一下cb的论坛就可以找到。

http://forums.codeblocks.org/index.php/ ... 242.0.html

其他问题改天和你继续讨论,另外,我去看了你的blog,你很厉害,至少应该是软件开发的高手!

Posted: Sun May 10, 2009 3:40 pm
by Loaden
codelite的tags也有一个大问题:我最近发现,反应比较迟钝。
生成的数据库太大。
如果用MinGW,还好些,用VC:200多MB。
不支持挂接多个tags:一次只能挂一个。
所以目前还是使用codeblocks。

很奇怪:为什么Code::Blocks没有进入Ubuntu的软件库?

Posted: Sun May 17, 2009 2:28 pm
by ollydbg23
今天又发布了一个CB nightly build.
我估计下一个版本的发布,应该采用 wxWidgets 2.9了,呵呵。赞他们一个!

就是cb 里面的 code completion 的功能,实在还是有点烂。。。 :(

Posted: Mon May 25, 2009 11:44 am
by Loaden
使用了CodeLite一段时间,发现不少缺点,又用回Code::Blocks了:虽然很喜欢他的自动完成功能中.
1. 代码似乎不兼容GCC 4.4,我用GCC 4.4编译后,多次崩溃
2. 基于makefile,使用make构建MK文件,编译速度慢.
3. 不支持相对路径,也就无法完成绿色版.
4. 环境变量功能过于简单,如果涉及多个SDK,搜索路径繁琐.
5. 不支持cdb
6. gdb不支持汇编代码显示.
7. 不如Code::Blocks稳定

Posted: Mon May 25, 2009 11:57 am
by ollydbg23
我也安装过codelite不少次,但是最后还是一直在用codeblocks.
伴随着对一些功能的熟悉,用起来也更自如了,呵呵。

所以我还是支持codeblocks.
当然,另外一个原因是,cb里面我已经成功的书写多个wxWidgets程序了.

当然,我已经全部都在mingw下面工作了,不用微软的cbd等调试工具。