用于Linux的C ++ IDE?
我想把我的编程视野扩展到Linux。 一个好的,可靠的基本工具集是重要的,比IDE更基础的是什么?
我可以find这些SO主题:
- 适用于Linux和Linux的轻量级IDE
- 你用什么工具在Linux上开发C ++应用程序?
我不是在寻找一个轻量级的 IDE。 如果一个IDE值钱,那么我会付钱,所以它不一定是免费的。
那么我的问题是:
C ++编程IDE有什么好处可用于Linux?
最低限度是相当标准的:语法高亮,代码完成(如intellisense或其Eclipse对应)和集成debugging(如基本断点)。
我已经自己search了,但是有这么多,几乎不可能用手将好坏分开,特别是对于像我这样在Linux中几乎没有C ++编码经验的人来说。 我知道Eclipse支持C ++ ,并且我非常喜欢Java的IDE,但对于C ++来说它有什么用处,还有更好的方法吗?
第二篇文章实际上有一些很好的build议,但是我所缺less的是什么使得拥塞的IDE对用户来说如此的好,它的优点是什么?
也许我的问题应该是:
你提出什么IDE(给你的经验),为什么?
最初:混乱
当最初写这个答案时,我最近从Visual Studio(具有多年的经验)切换到Linux,我做的第一件事是尝试find一个合理的IDE。 当时这是不可能的:没有好的IDE存在。
主显节:UNIX是一个IDE。 所有的。 1
然后我意识到Linux中的IDE是其工具的命令行:
- 首先你设置你的shell
- Bash,在我的情况下,但很多人喜欢
- 鱼或者
- (哦,我的)Zsh ;
- 和你的编辑 挑你的毒药 – 都是最先进的:
- Neovim 2或
- Emacs 。
根据你的需要,你将不得不安装和configuration几个插件,使编辑器很好地工作(这是一个恼人的部分)。 例如,Vim上的大多数程序员将从用于智能自动完成的YouCompleteMe插件中受益。
一旦完成,shell就是你的命令接口,与各种工具 – debugging器(gdb),Profiler(gprof,valgrind)等进行交互。你可以使用Make , CMake , SnakeMake或其他任何工具来设置你的项目/构build环境备择scheme。 而且你使用版本控制系统来pipe理你的代码(大多数人使用Git )。 您也使用tmux (以前也屏幕)来复用(=认为多个窗口/选项卡/面板)并坚持您的terminal会话。
重要的是,由于shell和一些工具书约定,这些都相互融合 。 那样的话,Linux shell就是一个真正集成的开发环境 ,与其他现代IDE完全一致。 (这并不意味着单个IDE没有可能缺less命令行的function,但反过来也是如此)。
给每个人自己
一旦你习惯了,我不能夸大上述工作stream程的function。 但是有些人只是更喜欢graphics编辑器,并且在这个答案最初编写以来的几年里,Linux已经为几种不同的编程语言获得了一套优秀的graphics化IDE(但是据我所知,C ++没有)。 即使 – 像我一样试试他们 – 你最终不会使用它们。 这只是一个小而有偏见的select:
- 对于Python开发,有PyCharm
- 对于R,有RStudio
- 对于JavaScript和TypeScript,还有Visual Studio Code (这也是一个很好的全能编辑器)
- 最后,许多人喜欢Sublime Text编辑器进行一般的代码编辑。
请记住,这个清单还远远没有完成。
1我从dsm的评论中偷了这个标题。
2我曾经在这里提到Vim。 虽然普通的Vim仍然是有能力的,但Neovim是一个有希望的重启,现代化了几个老疣。
我个人最喜欢的是CodeLite 2.x IDE。
见: http : //www.codelite.org
使用CodeLite的决定基于对以下C ++ IDE for Linux的研究:
- Eclipse伽利略与CDT插件
- NetBeans 6.7(也是SunStudio IDE的基础)
- KDevelop4
- CodeBlocks 8.02
- CodeLite 2.x
毕竟我决定使用CodeLite 2.x。
下面我列出了关于所提到的C ++ IDE的一些优点和缺点。 请注意,这只反映了我个人的意见!
编辑 :可惜,SOF不支持表,所以我必须写段落…
Eclipse伽利略与CDT插件
优点:
- 合理快捷
- 还支持Java,Perl(带EPIC插件)
- 常用和维护良好
- 也可用于其他操作系统(Windows,MacOS,Solaris,AIX(?))
缺点:
- graphics用户界面非常混乱,有点不一致 – 一点也不直观
- 沉重的重量
- 只支持CVS(AFAIK)
NetBeans 6.7 (注意这也是SunStudio IDE的基础)
优点:
- 我见过的最直观的GUI之一
- 也支持Java,Python,Ruby
- 整合了CVS,SVN,Mercurial
- 常用和维护良好
- 也可用于其他操作系统(Windows,MacOS,Solaris)
缺点:
- 极其缓慢
- 沉重的重量
- 使用空格缩进,这不是我工作的方针。 我相信这是可configuration的,但我不知道如何去做到这一点
KDevelop4 (注意:我没有太多的testing)
优点:
- 通常在Linux上使用
- 整合了CVS,SVN,Mercurial
缺点:
- GUI看起来有点旧式
- 沉重的重量
- 非常特定于KDE环境
CodeBlocks 8.02 (注意:我没有太多的testing)
优点:
- 合理快捷
缺点:
- graphics用户界面看起来有点旧(虽然它有一个很好的启animation面)
- 编辑器中的字体非常小
- 一些图标(例如,debugging器相关的图标开始/步进)非常小
- 没有源控制集成
CodeLite 2.x (注:这是我个人最喜欢的)
优点:
- 我在Linux上看到的最好的,现代的,直观的GUI
- 轻量级
- 合理快捷
- 整合了SVN
- 也可用于其他操作系统(Windows,MacOS,Solaris(?))
缺点:
- 没有CVS集成(这对我来说很重要,因为我必须在工作中使用它)
- 不支持Java,Perl,Python(会很好)
- 代码::块
- Eclipse CDT
不久,你会发现,IDE是不够的,你将不得不学习GCC工具链(这不难,至less学习基本function)。 但是在减less与IDE,IMO的过渡性痛苦方面没有任何伤害。
一个简单的回答,只是为了增加一点知识,这个主题:
你一定要检查出NetBeans 。 Netbeans 6.7具有以下特点:
- C / C ++项目和模板:支持语法高亮,自动代码完成,自动缩进。
- 它有一个C / C ++debugging器
- 支持编译器configuration,configurationpipe理器和生成文件支持(使用向导)。
- 它有一个类窗口,一个用法窗口和一个文件导航窗口(或面板)。
- macros展开视图 ,也是工具提示 。
- 支持QT开发 。
我认为这是一个完美的(而且更好的)Visual Studio替代品,是学习C / C ++的非常好的工具。
祝你好运!
Qt Creator (来自诺基亚/ Trolltech / Digia)至less在Qt特定项目中performance出了很大的希望。
你能否澄清一下,你是如何改变的? 也许你可以通过提供一些你使用的信息的链接来指向正确的方向。
我的第一个来源实际上是工具的man
页。 只要input
$ man toolname
在命令行( $
这里是提示的一部分,而不是input)。
根据平台,它们写得很好,也可以在互联网上find。 在make
的情况下,我实际上阅读了几个小时的完整文档 。 实际上,在大多数情况下,我不认为这是必要的或有帮助的,但是在Linux下的第一个任务中,我需要一个复杂的makefile,所以我有一些特殊的要求。 在编写makefile后,我把它交给了一个经验丰富的同事,他做了一些小小的调整和修正。 之后,我几乎知道make
。
我使用了GVIM,因为我在那里有一些(但不是很多)的经验,对于Emacs或者替代品我什么都不说。 我发现它真的有助于阅读其他人的.gvimrc
configuration文件。 很多人把它放在networking上。 这是我的 。
不要试图一次掌握所有的binutils,function太多。 但是要得到一个总体的概述,以便在将来需要某些东西时知道要search的位置。 但是,您应该知道g++
和ld
所有重要参数(除非明确禁止,否则将自动调用GCC链接器工具)。
另外我很好奇,你有代码完成和语法突出显示,当你的代码?
语法高亮:是的,比Visual Studio好得多。 代码完成:是的。 首先,我不得不承认,即使在Visual Studio中,我也没有使用C ++代码完成,因为(与VB和C#相比)它不够好。 现在我不经常使用它,但是,GVIM 具有对C ++的本地代码完成支持。 结合ctags库和一个插件如taglist,这几乎是一个IDE。
其实,让我开始的是Armin Ronacher的一篇文章 。 在阅读文本之前,先看截图吧!
在获取(语法)错误之前,您是否必须先进行编译?
是。 但是这对于Visual Studio来说是一样的,是不是(我从来没有使用过整个番茄)? 当然,语法突出显示将显示不匹配的括号,但这是关于所有。
以及如何debugging(再次考虑断点等)?
我使用gdb
这是一个命令行工具。 还有一个称为DDD
的graphics前端。 gdb
是一个现代的debugging工具,可以在IDE中做所有你能做的事情。 唯一让我感到困扰的是读取堆栈跟踪,因为行不是缩进或格式化的,所以在使用大量模板(我这样做)时很难扫描信息。 但是这些也会使IDE中的堆栈跟踪变得混乱。
就像我说的,我有幸在高中使用Windows记事本和命令行java编译器来开始使用Java编程语言的第一步,而且这真是一场噩梦! 当然,当我可以将它与其他编程课程进行比较时,我已经有了像样的IDE
您甚至不应该尝试将现代的全function编辑器(如Emacs或GVIM)与记事本进行比较。 记事本是一个修饰的TextBox
控件,这真的使所有的差异。 另外,在命令行上工作在Linux和Windows中是一个非常不同的体验。 Windows cmd.exe
严重瘫痪。 PowerShell好多了。
/编辑:我应该明确提到, GVIM有标签编辑 (如标签浏览,而不是标签与空格)! 我花了好几年才find他们,尽pipe他们根本没有隐藏起来。 只需键入:tabe
而不是plain :e
打开文件或创build新文件时,GVIM将创build一个新选项卡。 切换标签可以使用光标或几个不同的快捷方式(取决于平台)。 按键gt
(键入g ,然后t在命令模式)应该无处不在,并跳转到下一个选项卡,或选项卡号。 如果给出了一个数字 键入:help gt
获取更多帮助。
不要重复一个答案,但我想我可以多加一点。
Slickedit是一个优秀的IDE。
它能够很好地支持大型代码库,而不会减慢或花费所有时间索引。 (这是我用eclipse的cdt的问题)。 实际上,Slickedit的速度可能是最好的。
代码完成效果很好,有很多选项可用于自动格式化,美化和重构等。
它具有集成的debuggingfunction。
它有插件支持和相当活跃的社区创build它们。
从理论上讲,你应该能够和传统的makefile做的很好的融合,因为它可以让你直接从一个项目创build一个项目,但是当我尝试的时候并没有那么顺利。
除了Linux,还有Mac和Windows版本,如果你需要的话。
作为一个以前的UNIX家伙,我总是使用Emacs。 但是,这有一个非常陡峭和漫长的学习曲线,所以我不知道我可以推荐给新来者。
Linux真的没有一个“好”的IDE。 Eclipse对于C / C ++来说不是很好(CDT正在改进,但并不是很有用)。 其他人错过了你将要寻找的所有function。
了解所有的个人工具(gcc,make,gdb等)是如何工作的,这是非常重要的。 在你这样做之后,你可能会发现Visual Studio的做事方式非常有限。
Checkout Netbeans,它是用Java编写的,所以无论你的操作系统如何,你都可以拥有相同的环境,它不仅仅支持C ++。
我不会试图说服你,因为我认为IDE可以是一个非常个人的select。 对于我来说,它可以快速提高我的工作效率,支持我编写的语言,并具有您期望从IDE获得的标准function。
只是快速跟进这个问题…
自从我开始使用Vim作为我在Linux中编程C ++的主要“GUI”工具已经一个月了。 起初学习曲线确实有些陡峭,但过了一段时间,打开正确的选项和脚本运行,我真的得到了它的窍门!
我喜欢你如何塑造Vim来满足你的需求; 只需添加/更改键映射 ,Vim就变成了一个高效率的“IDE”。
在Linux上构build和编译C ++程序的工具链也非常直观。 make和g ++是你将要使用的工具。
然而, debugging器ddd并不是那么好,但也许这是因为我没有时间来正确掌握它。
所以对于那些正在或正在Linux上寻找一个好的C ++ IDE的人来说,就像我一样,最好的select是使用Linux本身的标准可用工具(Vim,g ++,ddd),你至less应该尝试使用他们在找别的之前呢
最后但并非最不重要的一点,我真的很感谢konrad在这里的回答,它真的帮助我在Linux开发环境中find自己的方式,谢谢!
我也没有closures这个问题,所以人们仍然可以反应,甚至可以添加新的build议或补充已经很好的答案…
我build议你阅读UNIX编程的艺术 。 它将构思您将IDE环境用作环境。
较短的回答是:select你喜欢的任何“编辑器”,然后使用GDB控制台或简单的GDB前端来debugging你的应用程序。 debugging器带有花哨的IDE,例如Netbeans用于C / C ++。 我使用Netbeans作为我的编辑器,Insight和GDB控制台作为我的debugging器。
有了洞察力,你有一个很好的GUI和GDB的原始力量。
只要你习惯了GDB命令,你就会开始喜欢它,因为你可以做一些你永远无法使用GUI的东西。 如果您使用的是GDB 7或更新的版本,甚至可以使用Python作为您的脚本语言。
这里的大多数人更关注IDE的“编辑”。 但是,如果您正在使用C / C ++开发大型项目,则可以轻松将超过70%的时间花在“debugging程序”上。 花式IDE的debugging器至less比Visual Studio晚10年。 例如,Netbenas与Visual Studio有非常相似的接口。 但是与Visual Studio相比,它的debugging器有许多缺点。
- 显示甚至只有几百个元素的数组非常慢
- 没有突出显示更改的值(默认情况下,Visual Studio在红色的监视窗口中显示更改的值)
- 显示内存的能力非常有限。
- 您不能修改源代码,然后继续运行。 如果一个错误需要很长时间才能打开,您希望更改源代码并实时应用更改,并继续运行您的应用程序。
- 您不能更改“下一个语句”来运行。 在Visual Studio中,可以使用“设置下一个语句”来更改应用程序的运行方式。 虽然如果使用不当,这个function可能会导致应用程序崩溃,但这会为您节省很多时间。 例如,如果您发现应用程序的状态不正确,但您不知道是什么导致了问题,则可能需要重新运行源代码的某个区域,而无需重新启动应用程序。
- 没有内置的对STL的支持,比如vector,list,deque和map等
- 没有看点。 当需要在variables被改变的地方停止你的应用程序时,你需要有这个特性。 基于英特尔的计算机具有硬件观察点,以便观察点不会降低系统速度。 在不使用观察点的情况下,可能需要几个小时才能find一些难以发现的错误。 “Visual Studio”将“观察指针”称为“数据中断点”。
名单可以更长。
我对Netbeans或其他类似的IDE的缺点感到沮丧,所以我开始学习GDB本身。 我发现GDB本身非常强大。 GDB没有上面提到的所有“缺点”。 其实GDBfunction非常强大,在很多方面比Visual Studio还要好。 这里我只是向你展示一个非常简单的例子。
例如,你有一个数组像:
struct IdAndValue { int ID; int value; }; IdAndValue IdAndValues[1000];
当您的应用程序停止,并且您想要检查IdAndValues中的数据时。 例如,如果你想在一个特定的“ID”中find数组中的序数和值,你可以创build一个如下所示的脚本:
define PrintVal set $i=0 printf "ID = %d\n", $arg0 while $i<1000 if IdAndValues[$i].ID == $arg0 printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue set $i++ end end end
您可以在当前上下文中使用您的应用程序中的所有variables,您自己的variables(在我们的示例中为$ i),传递的参数(在本例中为$ arg0)以及所有GDB命令(内置或用户定义的)。
从GDB提示符中使用PrintVal 1打印出ID为“1”的值
顺便说一下,NetBeans确实附带了一个GDB控制台,但通过使用控制台,您可能会崩溃Netbeans。 我相信这就是为什么控制台在NetBeans中默认隐藏的原因
如果你喜欢Eclipse for Java,我build议Eclipse CDT。 尽pipeC / C ++的支持并不像Java那样强大,但它仍然提供了大部分function。 它具有一个名为Managed Project的很好的function,如果您没有使用Makefiles的经验,则可以更轻松地处理C / C ++项目。 但是你仍然可以使用Makefiles。 我做C和Java编码,我对CDT非常满意。 我正在开发C语言的embedded式设备的固件,以及与此设备交谈的Java应用程序,并且非常适合使用相同的环境。 我想这可能会让我更有成效。
我正在使用“ Geany ”发现迄今为止,它的快速和轻量级的IDE。
Geany的特点是 :
- 代码折叠
- 会话保存
- 基本的IDEfunction,如语法高亮显示,制表符,自动缩进和代码完成
- 简单的项目pipe理
- build立系统
- 颜色select器(在Web开发期间令人惊讶的方便)
- embedded式terminal仿真
- 通知提示
- 符号列表
- 自动完成常用构造(如if,else,while等)
我喜欢人们完全错过IDE原始问题中的请求。 Linux不是一个IDE。 这不是那些话的意思。 我学习了使用vi和gcc的c和c ++,并且我并不是说它们不是足够的工具,但它们不是IDE。 即使你使用更复杂的工具,比如vim或者emacs,或者你想要的任何奇特的编辑器,在命令行input命令也不是IDE。
另外,你们都知道make是视觉工作室的一部分吗? IDE是“限制”的想法是愚蠢的,如果你可以使用IDE来加速某些事情,但仍然能够在需要时回退命令行的东西。
所有这一切,我build议,像上面几个,尝试Code块。 它具有体面的代码突出显示,创build项目,编写代码,运行代码等非常简单的方法,这是真正IDE的核心,而且看起来相当稳定。 debugging很糟糕…我从来没有在任何linux / unix变体中看到一个体面的交互式debugging器。 gdb是不是。 如果你习惯了视觉工作室风格的debugging,那么你几乎不走运。
无论如何,我会收拾我的东西,我知道只有一次观看的Linux人群会大喊大叫,很快就把我赶出了城市。
make + vim + gdb =一个伟大的IDE
我很喜欢Ultimate ++的IDE。 它有一些被devise成与自己的库一起使用的特性(如果你不想在GTK +或QT上购买,那么BTW就是一个不错的工具包),但是它和一般的C ++项目完全兼容。 它提供了体面的代码完成,良好的语法着色,集成debugging以及大多数现代IDE支持的所有其他function。
我真的build议codeblocks 。 它不像Eclipse那样沉重,它有Visual Studio项目的支持。
也许Eclipse的Eclipse 工具项目可以满足您的需求?
Linux Tools项目旨在为Linux开发人员提供function全面的C和C ++ IDE。 我们构build了CDT的源代码编辑和debuggingfunction,并集成了GNU Autotools,Valgrind,OProfile,RPM,SystemTap,GCov,GProf,LTTng等stream行的本地开发工具。当前的项目包括LTTng跟踪查看器和分析器, RPM .spec编辑器,Autotools构build集成,Valgrind堆使用分析工具和OProfile调用分析工具。
在Linux上有很多的IDE:
- 代码::块
- Codelite
- KDevelop的
- Qt Creator
- Eclipse与CDT
- NetBeans的
根据我的经验,最有价值的是Eclipse和Qt Creator 。 两者都提供了所有“标准”function(即自动完成,语法高亮,debugging器,git集成)。 值得注意的是,Eclipse还提供了重构function,而Qt Creator提供了与Valgrind的集成并支持在远程目标上的部署。
另外商业CLion IDE似乎很好(但我没有广泛使用它)。
我听说Anjuta对于Gnome用户来说非常漂亮。 我和KDevelop玩了一下,这很好,但是有些缺乏特色。 Code :: Blocks也是非常有前途的,我最喜欢那个。
Sun Studio版本12免费下载(免费和付费支持) – http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 。
我相信你在这个IDE中有代码完成和debugging支持,包括插件支持。
Sun Studio可用于Linux和Solaris。 论坛: http : //developers.sun.com/sunstudio/community/forums/index.jsp 。 Sun Studio Linux论坛: http : //forum.sun.com/forum.jspa?forumID=855
我会急于听到你对这个工具的反馈。
BR,
〜一
我以前使用Ultimate ++ IDE,这是相当不错的。
然后我注意到,这根本不是你如何在那里工作*,我把所有东西都扔了,花了几天的时间阅读手册,设置我的shell(bash),build立了一个GVIM环境,学习了GCC / binutils工具链, make和gdb过着幸福的生活。
我主要是同意的,但问题也是一个看法:我们忘记了在任何select的IDE(或其他环境)中生产效率是多么的困难。 我发现在许多方面IDE(Visual Studio,NetBeans,Eclipse)非常麻烦。
作为一个以前的UNIX家伙,我总是使用Emacs。 但是,这有一个非常陡峭和漫长的学习曲线,所以我不知道我可以推荐给新来者。
我想第二个; 在Linux和MSW(XP2,W2K)上使用Emacs作为我的主编辑器。 我不同意它有一个陡峭的学习曲线,但会说,因为它有很多的function,它有一个漫长的学习曲线。 您可以在短时间内提高生产力,但是如果您愿意,您可以在未来几年内学习新的function。
但是,不要指望Emacs的所有function都可以在下拉菜单中find,只是有太多的function可以find它。
正如我所提到的,我已经在MSW上使用了GNU Emacs多年。 直到我“升级”到2008年之前,Visual Studio一直运行良好; 现在有时会在从磁盘刷新文件之前延迟很多秒。 在VS窗口中编辑的主要原因是“Intellisense”代码完成function。
geany我推荐
虽然我使用Vim,但我的一些同事使用SlickEdit ,看起来不错。 我不确定集成debugging,因为无论如何我们无法在我们的特定项目上做到这一点。
SlickEdit对导航大型代码库有很好的支持,通过交叉引用和标签跳转。 当然,它也具有语法高亮和代码完成等基本function。
我使用Eclipse CDT和Qt Creator(用于Qt应用程序)。
这是我的偏好。 这是一个非常具有挑战性的问题,开发人员的答案是多less。 🙂
SlickEdit的。 自2005年以来,我一直在Windows和Linux上使用并喜爱SlickEdit。 我也有在Visual Studio(5,6,2003,2005)工作的经验,并且只是使用Emacs和命令行。 我使用外部makefile的SlickEdit,我的一些队友使用SlickEdit,其他人使用Emacs / vi。 我不使用集成的debugging器,集成的版本控制,集成的构build系统:我通常发现太多的集成是真正的痛苦。 SlickEdit是强大的(很less有错误),快速和直观。 这就像一辆德国车,一辆司机的车。
最新版本的SlickEdit似乎提供了许多我不感兴趣的function,我有点担心产品在未来会变得臃肿和稀释。 现在(我使用V13.0),这是伟大的。
对我来说, Ultimate ++似乎是编写跨平台程序的最佳解决scheme
如果你长时间使用vim,那么你应该把它作为你的IDE。 有很多插件可用。 我发现其中几个非常有用的,编译它在这里,看看它。
- C / C ++ IDE
- 源代码浏览器
还有更多的在vi / vim提示和技巧系列在那里。