适用于Linux的C ++ IDE?

时间:2020-03-05 18:42:22  来源:igfitidea点击:

我想将编程视野扩展到Linux。一个好的,可靠的基本工具集很重要,还有什么比IDE更基本的呢?

我可以找到以下SO主题:

  • 适用于Linux和Windows的轻量级IDE
  • 我们使用什么工具在Linux上开发C ++应用程序?

我不是在寻找轻量级的IDE。如果IDE值得花钱,那么我会为此付费,因此它不一定是免费的。

然后,我的问题是:

What good, C++ programming IDE is available for Linux?

最低标准是相当标准的:语法高亮,代码完成(例如intellisense或者它的Eclipse对应物)和集成调试(例如基本
断点)。

我已经亲自搜索过它,但是有太多的东西几乎是不可能的,尤其是对于像我这样在Linux上几乎没有C ++编码经验的人来说,手工将优点与缺点分开是几乎不可能的。我知道Eclipse支持C ++,我真的很喜欢Java的IDE,但是它对C ++有好处吗,还有什么更好的选择吗?

第二篇文章实际上提出了一些好的建议,但是我所缺少的是到底是什么使Sugested IDE对用户如此好,它的(不利)优势是什么?

因此,也许我的问题应该是:

What IDE do you propose (given your experiences), and why?

解决方案

回答

Checkout Netbeans,它是用Java编写的,因此无论我们使用哪种操作系统,都将拥有相同的环境,并且它不仅仅支持C ++。

我不会试图说服我们,因为我认为IDE可以是非常个人的选择。对我来说,它快速,支持我编写的语言并具有IDE所期望的标准功能,从而提高了我的生产率。

回答

最初:混乱

最初编写此答案时,我最近已经从Visual Studio(具有多年的经验)切换到Linux,而我所做的第一件事就是试图找到一个合理的IDE。当时这是不可能的:没有好的IDE。

顿悟:UNIX是一个IDE。所有的1

然后我意识到Linux中的IDE是其工具的命令行:

  • 鱼或者
  • (噢,我的)Zsh;
  • Emacs。

然后,根据需要,我们将不得不安装和配置多个插件以使编辑器正常工作(那是一个令人讨厌的部分)。例如,Vim上的大多数程序员都可以从YouCompleteMe插件中受益,实现智能自动补全。

完成操作后,shell是命令界面,可与各种工具(调试器(gdb),探查器(gprof,valgrind)等)进行交互。我们可以使用Make,CMake,SnakeMake或者任何其他替代方法来设置项目/构建环境。然后,我们可以使用版本控制系统来管理代码(大多数人使用Git)。我们还可以使用tmux(以前也用于屏幕)进行多路复用(=考虑多个窗口/选项卡/面板)并保持终端会话。

关键是,由于外壳程序和一些工具编写约定,所有这些都相互集成在一起。这样一来,Linux Shell就成为了真正的集成开发环境,与其他现代IDE完全一样。 (这并不意味着单个IDE不具有命令行可能缺少的功能,但是反之亦然。)

给每个人自己

一旦养成习惯,我不能高估上述工作流程的功能。但是有些人只是喜欢图形编辑器,并且自从最初写出这个答案以来,多年来,Linux已经为几种不同的编程语言(但是据我所知,对于C ++而言)却获得了一套出色的图形IDE。即使"像我一样"也要尝试一下,最终我们将不使用它们。这里只是一个小的偏见:

  • 对于Python开发,有PyCharm
  • 对于R,有RStudio
  • 对于JavaScript和TypeScript,有Visual Studio Code(这也是一个很好的全方位编辑器)
  • 最后,许多人喜欢Sublime Text编辑器进行常规代码编辑。

请记住,此列表远非完整。

1我从dsms注释中窃取了该标题。

2我以前在这里指的是Vim。尽管普通Vim的功能仍然强大,但Neovim有望重新启动,并且对一些旧疣进行了现代化改造。

回答

  • 代码::块
  • Eclipse CDT

很快,我们会发现IDE不够,并且无论如何我们都必须学习GCC工具链(这并不难,至少要学习基本功能)。 IMO减轻了IDE的过渡痛苦,但没有任何害处。

回答

could you clarify a little bit more how it was for you, what you had to change. Maybe you could point me in the right direction by providing some links to the information you used.

我的第一个来源实际上是工具的" man"页面。只需输入

$ man toolname

在命令行上(这里的$是提示的一部分,而不是输入)。

根据平台的不同,它们的编写方式也很不错,也可以在Internet上找到它们。在make的情况下,我实际上阅读了花了几个小时的完整文档。实际上,在大多数情况下,我认为这不是必需的或者无用的,但是在Linux下的第一次作业中,我有一些特殊的要求,即需要复杂的Makefile。编写了makefile之后,我将其交给了一位经验丰富的同事,他做了一些小的调整和更正。在那之后,我几乎知道make

我之所以使用GVIM,是因为我在那里有一些(但不是很多)先前的经验,我对Emacs或者替代品一无所知。我发现读取其他人的.gvimrc配置文件确实很有帮助。许多人将其放在网络上。这是我的。

不要试图一次掌握所有binutils,因为函数太多了。但是,请获取一般概述,以便将来需要时可以在哪里搜索。但是,我们应该了解g ++ld的所有重要参数(GCC链接器工具会自动调用,除非明确阻止)。

Also I'm curious, do you have code completion and syntax highlighting when you code?

语法突出显示:是的,并且比Visual Studio更好。代码完成:是的。首先,我必须承认,即使在Visual Studio中,我也没有使用C ++代码完成功能,因为(与VB和C#相比)这还不够好。我现在不经常使用它,但是,GVIM具有对C ++的本机代码完成支持。结合ctags库和一个插件(如taglist),这几乎是一个IDE。

实际上,让我开始的是Armin Ronacher的一篇文章。阅读本文之前,请看末尾的屏幕截图!

do you have to compile first before getting (syntax) errors?

是的。但这对于Visual Studio来说是一样的,不是吗(我从未使用过Whole Tomato)?当然,语法高亮将显示不匹配的括号,但仅此而已。

and how do you debug (again think breakpoints etc)?

我使用gdb这是一个命令行工具。还有一个称为" DDD"的图形前端。 gdb是一种现代的调试工具,可以完成我们在IDE中可以做的所有事情。真正让我烦恼的唯一事情是读取堆栈跟踪信息,因为行没有缩进或者格式化,因此当我们使用很多模板时,很难扫描信息(我这样做)。但是,这些也使IDE中的堆栈跟踪变得混乱。

Like I said, I had the 'pleasure' to set my first steps in the Java programming language using windows notepad and the command line java compiler in high school, and it was, .. wel a nightmare! certainly when I could compare it with other programming courses I had back then where we had decent IDE's

我们甚至不应该尝试将现代的全功能编辑器(例如Emacs或者GVIM)与记事本进行比较。记事本是一个修饰的" TextBox"控件,它的确与众不同。此外,在Linux和Windows中,使用命令行进行操作是非常不同的体验。 Windowscmd.exe严重损坏。 PowerShell更好。

/ EDIT:我应该明确提及GVIM具有选项卡式编辑功能(如在选项卡式浏览中一样,而不是tabs-vs-spaces)!我花了很长时间才找到它们,尽管它们根本没有被隐藏。打开文件或者创建新文件时,只需键入:tabe而不是普通:e,GVIM将创建一个新标签。可以使用光标或者几个不同的快捷方式(取决于平台)在选项卡之间切换。键" gt"(键入" g",然后在命令模式下键入" t")应该可以在任何地方使用,并跳转到下一个选项卡或者选项卡号。如果给出了数字,则为n。输入:help gt以获得更多帮助。

回答

尽管我使用Vim,但我的一些同事使用的SlickEdit看起来还不错。我不确定集成调试,因为我们仍然无法在我们的特定项目中做到这一点。

SlickEdit确实具有很好的支持,可以通过交叉引用和标签跳转来导航大型代码库。当然,它也具有语法突出显示和代码完成之类的基本内容。

回答

作为UNIX的老手,我总是使用Emacs。但这有一个非常陡峭和漫长的学习曲线,所以我不确定是否可以向新手推荐它。

确实没有适用于Linux的"好" IDE。 Eclipse对于C / C ++不是很好(CDT正在改进,但还不是很有用)。其他人则缺少我们要寻找的所有功能。

了解所有单个工具(gcc,make,gdb等)如何工作真的很重要。这样做之后,我们可能会发现Visual Studio的处理方式非常有限。

回答

我听说Anjuta对于Gnome用户而言非常流畅。我在KDevelop上玩了些游戏,它不错,但是有点缺乏功能。 Code :: Blocks也很有前途,我最喜欢那个。

回答

我非常喜欢Ultimate ++的IDE。它具有一些旨在与自己的库一起使用的功能(BTW,如果我们不想在GTK +或者QT上购买,这是一个非常不错的工具包),但它与常规C ++项目完美地兼容。它提供了体面的代码完成,良好的语法着色,集成的调试以及大多数现代IDE支持的所有其他功能。

回答

如果我们喜欢Eclipse for Java,则建议使用Eclipse CDT。
尽管C / C ++支持并不像Java那样强大,但它仍然提供了大多数功能。它具有一个名为Managed Project的很好的功能,如果我们没有Makefile的经验,则可以更轻松地使用C / C ++项目。但是我们仍然可以使用Makefiles。
我使用C和Java编码,对CDT感到非常满意。我正在为C中的嵌入式设备和与该设备通信的Java应用程序开发固件,并且很高兴为两者使用相同的环境。我想这可能会使我更有生产力。

回答

不重复一个答案,但是我想我可以再补充一点。

Slickedit是出色的IDE。

它很好地支持大型代码库,而不会减慢或者花费所有时间进行索引。 (这是我在Eclipse的cdt中遇到的问题)。实际上,Slickedit的速度可能是最好的选择。

回答

代码补全效果很好,并且有很多选项可用于自动格式化,美化和重构之类的事情。
它确实具有集成调试功能。
它具有插件支持和相当活跃的社区来创建它们。
从理论上讲,我们应该能够与从事传统Makefile制作工作的人们很好地集成在一起,因为它允许我们直接从一个项目中创建一个项目,但是效果并不像我尝试时那样顺畅。
除Linux外,如果需要,还有Mac和Windows版本。

  • C / C ++项目和模板:支持语法突出显示,自动代码完成,自动缩进。
  • 它具有一个C / C ++调试器
  • 支持编译器配置,Configuration Manager和Makefile支持(带有向导)。
  • 它具有一个"类"窗口,一个"用法"窗口和一个"文件导航"窗口(或者面板)。
  • 宏展开视图以及工具提示。
  • 支持QT开发。

快速答案,只是为该主题添加更多知识:
我们一定要检查一下NetBeans。 Netbeans 6.7具有以下功能:

我认为它是Visual Studio的完美替代品,并且是学习C / C ++的很好的工具。

回答

祝你好运!

Konrad的建议非常好,我们应该在经典的vi / cc / ld / db / make环境中愉快地工作,而不会带来太多麻烦。在10到15周的课程中,许多很多大学生都学习了此工具链。

回答

也就是说,另一个经典环境是走Emacs路线。我不会称其为IDE,但它确实将两个重要的开发工具集成到了编辑器中:编译器的输出和调试器。我们可以将其压缩到文件中与编译器错误相对应的行,还可以设置断点并使中的步进器。

我喜欢SciTE作为Linux上C ++ / Python的基本编辑器。它具有类似于VC的键盘绑定,因此我们无需重新编程剪切和粘贴手指。

我将它与Git一起用于源代码控制,以及非常有用的'git grep'命令,用于在代码库中进行搜索。

回答

我使用Eclipse CDT,但是我的源代码库非常庞大,因此我在IDE上花费了太多时间。如果项目较小,则可能对我们有好处。

Sun Studio版本12是免费下载的(免费和付费支持)-http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit =%A0FREE + Download%A0%BB%A0。

我确定我们在此IDE中具有代码完成和调试支持,包括插件支持。

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
〜A

请快速跟进此问题...

自从我开始使用Vim作为主要的" GUI"已经一个月了
在Linux中进行C ++编程的工具。首先学习
曲线确实有些陡峭,但过了一段时间后,
正确的选项已打开,脚本正在运行
掌握了它!

我喜欢如何调整Vim以适应需求的方式;
只需添加/更改键映射,Vim就会变成一个
高产的" IDE"。

在Linux上构建和编译C ++程序的工具链是
也真的很直观。 make和g ++是我们将要使用的工具
使用。

调试器ddd并不是那么好,但是
也许是因为我没有时间去掌握它
适当地。

因此,对于正在或者正在寻找良好的C ++ IDE的任何人
就像我一样,Linux最好的选择就是标准
Linux本身中的可用工具(Vim,g ++,ddd),我们
在寻找之前,至少应该真正尝试使用它们
完善...

最后但并非最不重要的一点,我真的要感谢康拉德
他在这里的回答,这确实帮助我找到了自己的出路
Linux开发环境,谢谢!

回答

我也没有解决这个问题,所以人们仍然可以

回答

why wouldn't you also use it for C++?
  CDT meets every requirement you've
  mentioned.

反应甚至添加新的建议或者补充
已经非常不错的答案了...

and I really like that [eclipse] IDE for java,
  but is it any good for c++ and won't I
  miss out on something that is even
  better?

我很高兴我们似乎正在用vim来解决这个问题。但是我不得不说,对于我们如何"真的像Eclipse for Java"感到有些迷惑,这意味着我们已经熟悉它的工作原理。在那种情况下,为什么不也将它用于C ++? CDT满足我们提到的所有要求。

回答

一开始我没有使用eclipse,因为我不确定它是否同样能很好地为我提供使用C ++进行开发的方法。除此之外,我还坚信必须有更好,更专业的工具可用于Linux中的c ++开发:

回答

老实说,我相信,尽管某些工具(例如eclipse)在很多方面都很出色,但是最好也寻找其他选择(我并不是说只对IDE有用,而是在一般情况下,甚至在现实生活中)。 ..
就像在这种情况下一样,vim确实很棒,如果我坚持自己已经知道的东西,我会错过它的。

回答

我真的建议代码块。它不像Eclipse那样繁重,并且得到了Visual Studio项目的支持。

回答

在Visual Studio上长大之后,我发现相对较年轻的Code :: Blocks非常熟悉。

回答

And then I noticed that this simply isn't how you work there*, and I threw everything out, spent a few days reading manuals, set up my shell (bash), set up a GVIM environment, learned the GCC/binutils toolchain, make and gdb and lived happily ever after.

我以前使用过Ultimate ++ IDE,这相当不错。

As an old-time UNIX guy, I always use Emacs. But that has a pretty steep 
  and long learning curve, so I'm not sure I can recommend it to newcomers.

至少对于Qt特定项目,Qt Creator(来自Nokia / Trolltech / Digia)显示出了巨大的希望。

我大都同意,但是问题也是一种看法:我们忘记了在任何选择的IDE(或者其他环境)中提高生产力的难度。我发现IDE(Visual Studio,NetBeans,Eclipse)在许多方面都非常麻烦。

我要第二个在Linux和MSW(XP2,W2K)上都将Emacs用作我的主要编辑器。
我不同意它的学习曲线很陡,但是我要说,由于功能众多,它的学习曲线很长。我们可以在短时间内提高工作效率,但是如果我们愿意,可以在未来的几年中学习它的新功能。

回答

但是-不要期望Emacs的所有功能都可以在下拉菜单中使用,因为在那里找不到太多功能。

回答

如前所述,我在MSW上使用GNU Emacs已有多年了。在我"升级"到2008年之前,它在Visual Studio上一直运行良好。现在它有时会延迟几秒钟,才从磁盘刷新文件。在VS窗口中进行编辑的主要原因是" Intellisense"代码完成功能。

回答

我推荐的geany

回答

我建议我们阅读UNIX Progranmming的艺术。它将使我们下定决心将环境用作IDE。

使用Mono-Develop。它与Visual Studio非常相似。它可以跨平台运行,很棒!!

回答

SlickEdit。自2005年以来,我一直在Windows和Linux上使用并喜欢SlickEdit。我也有在Visual Studio(5、6、2003、2005)中使用Emacs和命令行的经验。我将SlickEdit与外部Makefile一起使用,一些队友使用SlickEdit,另一些队友使用Emacs / vi。我不使用集成的调试器,集成的版本控制,集成的构建系统:通常,我发现太多的集成才是真正的难题。 SlickEdit功能强大(几乎没有错误),快速且直观。就像德国的汽车,司机的汽车。

SlickEdit的最新版本似乎提供了许多我不感兴趣的功能,我有点担心该产品将来会变得肿和稀释。就目前而言(我使用V13.0),它很棒。

我个人最喜欢的是CodeLite 2.x IDE。

  • 带有CDT插件的Eclipse Galileo
  • NetBeans 6.7(它也是SunStudio IDE的基础)
  • KDevelop4
  • 代码块8.02
  • CodeLite 2.x

请参阅:http://www.codelite.org

使用CodeLite的决定基于对以下用于Linux的C ++ IDE的研究:

毕竟,我决定使用CodeLite2.x。

下面,我列出了有关上述C ++ IDE的一些优缺点。请注意,这仅反映我的个人观点!

编辑:太可惜SOF不支持表,所以我不得不在段落中写...

  • 合理的快速
  • 还支持Java,Perl(带有E.P.I.C插件)
  • 常用且维护良好
  • 也可用于其他OS风格(Windows,MacOS,Solaris,AIX(?))

带有CDT插件的Eclipse Galileo

  • GUI非常混乱并且有些不一致-根本不是很直观
  • 沉重的
  • 仅支持CVS(AFAIK)

优点:

缺点:

  • 我见过的最直观的GUI之一
  • 还支持Java,Python,Ruby
  • 集成了CVS,SVN,Mercurial
  • 常用且维护良好
  • 也可用于其他操作系统版本(Windows,MacOS,Solaris)

NetBeans 6.7(请注意,这也是SunStudio IDE的基础)

  • 极慢
  • 沉重的
  • 使用空格进行缩进,这不是我的工作策略。我确定这是可配置的,但我不知道如何做到这一点

优点:

缺点:

  • 通常在Linux上使用
  • 集成了CVS,SVN,Mercurial

KDevelop4(注意:我没有对其进行太多测试)

  • GUI看起来有些过时
  • 沉重的
  • 非常特定于KDE环境

优点:

缺点:

  • 合理的快速

CodeBlocks 8.02(注意:我没有对其进行太多测试)

  • GUI看起来有些过时(尽管它有一个不错的启动屏幕)
  • 编辑器中的字体很小
  • 一些图标(例如与调试器相关的图标开始/步进)非常小
  • 没有源代码控制集成

优点:

缺点:

  • 我在Linux上看到的最好,现代且直观的GUI
  • 轻的
  • 合理的快速
  • 集成SVN
  • 也可用于其他OS版本(Windows,MacOS,Solaris(?))

CodeLite 2.x(注意:这是我个人的最爱)

  • 没有CVS集成(这对我很重要,因为我必须在工作中使用它)
  • 不支持Java,Perl,Python(很高兴拥有)

回答

优点:

回答

缺点:

The Linux Tools project aims to bring a full-featured C and C++ IDE to Linux developers. We build on the source editing and debugging features of the CDT and integrate popular native development tools such as the GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, etc. Current projects include LTTng trace viewers and analyzers, an RPM .spec editor, Autotools build integration, a Valgrind heap usage analysis tool, and OProfile call profiling tools.

回答

make + vim + gdb =一个很棒的IDE

也许Eclipse的Linux工具项目可以满足需求?

回答

我使用Eclipse CDT和Qt Creator(用于Qt应用程序)。

回答

那是我的偏爱。这是一个非常具有启发性的问题,答案和开发人员一样多。 :)

对我而言,Ultimate ++似乎是编写跨OS程序的最佳解决方案

简短的答案是:选择所需的任何"编辑器",然后使用GDB控制台或者简单的GDB前端来调试应用程序。调试器附带了一些精美的IDE,例如Netbeans C / C ++的糟透了。我使用Netbeans作为编辑器,并使用Insight和GDB控制台作为调试器。

有了洞察力,我们将拥有一个不错的GUI和GDB的原始功能。

  • 即使显示只有几百个元素的数组,也非常慢
  • 不突出显示更改的值(默认情况下,Visual Studio在监视窗口中以红色显示更改的值)
  • 显示记忆的能力非常有限。
  • 我们无法修改源代码,然后继续运行。如果要花费很长时间才能发现错误,则我们想更改源并实时应用所做的更改,然后继续运行应用程序。
  • 我们不能更改"下一条语句"来运行。在Visual Studio中,可以使用"设置下一条语句"来更改应用程序的运行方式。尽管如果使用不当,此功能可能会使应用程序崩溃,但是它将节省大量时间。例如,如果我们发现应用程序的状态不正确,但是不知道是什么原因引起的,则可能需要重新运行源代码的特定区域而不重新启动应用程序。
  • 不支持STL,例如矢量,列表,双端队列和地图等。
  • 没有观察点。当我们需要在更改变量时立即停止应用程序时,需要具有此功能。基于Intel的计算机具有硬件监视点,因此监视点不会降低系统的速度。不使用观察点就可能要花费很多时间才能找到一些难以找到的错误。 " Visual Studio"将"监视指针"称为"数据断点"。

一旦我们习惯了GDB命令,我们就会开始喜欢它,因为我们可以做一些使用GUI永远做不到的事情。如果我们使用的是GDB 7或者更高版本,则甚至可以使用Python作为脚本语言。

这里的大多数人都更加关注IDE的"编辑器"。但是,如果我们正在使用C / C ++开发大型项目,则可以轻松地将超过70%的时间花费在"调试器"上。高端IDE的调试器至少比Visual Studio落后10年。例如,Netbenas与Visual Studio具有非常相似的界面。但是与Visual Studio相比,其调试器有许多缺点。

该列表可能更长。

struct IdAndValue
{
  int ID;
  int value;
};

IdAndValue IdAndValues[1000];

Netbeans或者其他类似IDE的缺点使我感到沮丧,以至于我开始学习GDB本身。我发现GDB本身非常强大。 GDB没有上述所有"缺点"。实际上,GDB非常强大,在许多方面它甚至比Visual Studio更好。在这里,我仅向我们展示一个非常简单的示例。

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

例如,我们有一个类似的数组:

当应用程序停止时,我们想检查IdAndValues中的数据。例如,如果要在数组中查找特定" ID"的序数和值,则可以创建如下脚本:

我们可以在当前上下文中使用应用程序中的所有变量,我们自己的变量(在我们的示例中为$ i),传递的参数(在我们的示例中为$ arg0)以及所有GDB命令(内置或者用户定义) )。

回答

在GDB提示符下使用PrintVal 1打印出ID为" 1"的值

  • C / C ++ IDE
  • 源代码浏览器

顺便说一句,NetBeans确实带有GDB控制台,但是使用该控制台,可能会使Netbeans崩溃。而且我相信这就是为什么在NetBeans中默认隐藏控制台的原因

回答

如果我们长时间使用vim,则实际上应该将其作为IDE。有很多可用的插件。我发现其中一些非常有用,并在此处进行了编译,请看一下。

回答

在那边的vi / vim提示与技巧系列中还有更多内容。

回答

我更喜欢使用Emacs和Vim编写C ++代码。当我需要使用IDE时,可以使用CodeBlocks。

段落数量不匹配

段落数量不匹配