209

I want to expand my programming horizons to Linux. A good, dependable basic toolset is important, and what is more basic than an IDE?

I could find these SO topics:

I'm not looking for a lightweight IDE. If an IDE is worth the money, then I will pay for it, so it need not be free.

My question, then:

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

The minimums are fairly standard: syntax highlighting, code completion (like intellisense or its Eclipse counterpart) and integrated debugging (e.g., basic breakpoints).

I have searched for it myself, but there are so many that it is almost impossible to separate the good from the bads by hand, especially for someone like me who has little C++ coding experience in Linux. I know that Eclipse supports C++, and I really like that IDE for Java, but is it any good for C++ and is there something better?

The second post actually has some good suggestions, but what I am missing is what exactly makes the sugested IDE so good for the user, what are its (dis)advantages?

Maybe my question should therefore be:

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

Community
  • 1
  • 1
sven
  • 17,326
  • 10
  • 48
  • 62
  • 1
    This is, I think, the 4th "What IDE should I use on Linux" question in a day or two. – Ben Collins Sep 17 '08 at 19:57
  • Maybe you should look at the date this question was asked... or point the newer questions to here – sven Sep 19 '08 at 07:38
  • In the last release, Eclipse has integrated the http://www.eclipse.org/linuxtools/ into its release train - that project aims to make Eclipse a more fully-fledged C/C++ IDE on Linux by integrating Linux-specific tools. – Jean Hominal Sep 14 '10 at 14:48

45 Answers45

259

Initially: confusion

When originally writing this answer, I had recently made the switch from Visual Studio (with years of experience) to Linux and the first thing I did was try to find a reasonable IDE. At the time this was impossible: no good IDE existed.

Epiphany: UNIX is an IDE. All of it.1

And then I realised that the IDE in Linux is the command line with its tools:

  • First you set up your shell
  • and your editor; pick your poison — both are state of the art:

Depending on your needs, you will then have to install and configure several plugins to make the editor work nicely (that’s the one annoying part). For example, most programmers on Vim will benefit from the YouCompleteMe plugin for smart autocompletion.

Once that’s done, the shell is your command interface to interact with the various tools — Debuggers (gdb), Profilers (gprof, valgrind), etc. You set up your project/build environment using Make, CMake, SnakeMake or any of the various alternatives. And you manage your code with a version control system (most people use Git). You also use tmux (previously also screen) to multiplex (= think multiple windows/tabs/panels) and persist your terminal session.

The point is that, thanks to the shell and a few tool writing conventions, these all integrate with each other. And that way the Linux shell is a truly integrated development environment, completely on par with other modern IDEs. (This doesn’t mean that individual IDEs don’t have features that the command line may be lacking, but the inverse is also true.)

To each their own

I cannot overstate how well the above workflow functions once you’ve gotten into the habit. But some people simply prefer graphical editors, and in the years since this answer was originally written, Linux has gained a suite of excellent graphical IDEs for several different programming languages (but not, as far as I’m aware, for C++). Do give them a try even if — like me — you end up not using them. Here’s just a small and biased selection:

Keep in mind that this list is far from complete.


1 I stole that title from dsm’s comment.

2 I used to refer to Vim here. And while plain Vim is still more than capable, Neovim is a promising restart, and it’s modernised a few old warts.

Konrad Rudolph
  • 482,603
  • 120
  • 884
  • 1,141
  • 3
    Exactly the same thing happened to me 3 years ago. – Nemanja Trifunovic Oct 20 '08 at 17:43
  • 223
    i strongly disagree. a decent ide is important no matter what u'r working on. it drastically increases productivity. i use codeblocks and find that going back to VI is almost impossible. i have coded on Mac, Win and Linux, and although i find visual studio to be the best IDE, codeblocks comes close. – DavidG Oct 21 '08 at 17:40
  • 35
    David, perhaps you could detail (own answer …) what exactly you're missing from the toolchain I described that an IDE delivers. As I've said, I've come from a strong IDE background and my productivity increase was the exact inverse of yours. – Konrad Rudolph Oct 22 '08 at 09:31
  • The problematic thing on Linux is always. Role your own stuff, and well the atttude towards commercial programms is devastating.... – Friedrich Mar 15 '09 at 06:42
  • 4
    I both agree and disagree with you. Learning the underlying tools is important, no question, but once you understand what's actually going on, a good IDE can make life a lot easier and more productive. I think the key is to get an IDE that tries to provide an interface to the tools below without trying to hide the details. I think this issue often confuses people coming from MSVS where the editor, the compiler, the debugger, etc. all appear to the user as a single monolithic tool. – Parker Coates May 08 '09 at 18:51
  • 48
    What refactoring support does Vim offer? In Eclipse (which runs under Linux), I can change the name of any Java method I wish, even if it is called in 300 places. Can you do it easily in Vim? – quant_dev Jun 10 '09 at 09:13
  • 25
    quant_dev: refactoring requires parsing the source code in some way. As far as I know, no VIM modules do that so the answer to your question is “none.” That's one of the reasons to prefer an IDE for IDE-centered languages such as Java. Since refactoring support (etc) for C++ is so minimal anyway (even in IDEs), this doesn't apply to C++. – Konrad Rudolph Jun 10 '09 at 13:56
  • 5
    "That's one of the reasons to prefer an IDE for IDE-centered languages such as Java. " For languages with context-free grammar and no preprocessor, rather :) You hava a point, but even C++ could use some sort of refactoring support. MS Visual C++ at least can take me from declaration to definition, and provides code completion. Can I have this in Vim? – quant_dev Jun 10 '09 at 20:15
  • 5
    quant_dev: very true. Concerning finding declarations: yes, Vim supports this through a number of extensions, via exuberant ctags. About auto completion: yes, it's supported but I've never used it (but neither in Visual Studio) so I don't know if it's usable. – Konrad Rudolph Jun 11 '09 at 06:20
  • 6
    quant_dev: Here's C++ syntax completion: http://www.vim.org/scripts/script.php?script_id=527 – Konrad Rudolph Jun 11 '09 at 13:53
  • 6
    Konrad Rudolph: Please don't comment on things that you have never used. The script description outright says "ignoring current scope." – wbkang Aug 30 '09 at 03:41
  • 9
    @wbkang: What exactly are you complaining about? If you had read my question on this (http://stackoverflow.com/questions/1115876/autocompletion-in-vim) you would have known that I’m *not* satisfied with CppComplete (*and* that I’ve used it). But it works well enough for some people so it was worth posting here, wasn’t it? – Konrad Rudolph Aug 30 '09 at 07:22
  • start off with vi and jump to eclipse when you understand what is going on behind the scenes. – Rohit Banga Oct 07 '09 at 12:12
  • Making changes too easy stimulates to make more changes. – ony Mar 29 '10 at 18:50
  • 2
    @quant_dev: Linux's support for refactoring comes from your brain, I think it could do a better job than anything automated? – Grant Paul Apr 04 '10 at 23:32
  • 9
    My brain is too good to be wasted on such trivial stuff. – quant_dev Apr 07 '10 at 19:04
  • 1
    @quant, you can find and replace your java function(in a file) using :1,$s/function_name/replace_name/g If this isn't powerful then "power" has to be redefined – rocknroll Apr 28 '10 at 10:14
  • 9
    @rocknroll: simple text replacement in a file/project ignores scope, type, and whether something is a comment. If I change a function name, I only want to change those places that actually call the function, not those places that have the same text as the function name, including comments, variables, other functions at different scope, etc. – Bill Jun 21 '10 at 17:09
  • 3
    @Bill, @quant_dev: Refactoring is rarely about "variable renaming", it's more of a conscious effort to re-organize code, and no IDE can ever help with that, there's no avoiding using your brain. Having said that, java people don't tend to be vimmers anyway .. – hasen Jul 07 '10 at 15:20
  • 3
    @hasen j - writing programs is also heavily "brain-involved", but nobody dismisses compilers and asks devs to write machine code by hand. refactoring requires using your brain to make the decision of which part of the code needs to be refactored and how; however, that does not preclude using proper tools to ensure that all the relevant changes are made in any part of the source that might be affected by the code refactoring. – Franci Penov Aug 06 '10 at 17:38
  • 2
    Franci Penov: You didn't understand my argument: refactoring cannot be automated, for the same reason programming cannot be automated. – hasen Aug 07 '10 at 00:56
  • 11
    @hasen: oh but large parts of it *can*. Scope-aware renaming, for example. And believe me, this is *big*. And Ecplise (e.g.) can save *a lot* of work here. – Konrad Rudolph Aug 07 '10 at 08:11
  • 2
    If you want to work on a platform, you need to understand the way how to work on that platform. For Unix/Linux, all its powerful functionalities can be found in terminal. If you get used to those tools, you will never go back to IDE – Spike Dec 31 '10 at 02:13
  • 3
    just one question: do you hit F5 to test your latest change or press Alt+F2 then type gcc /.../myproject/program.cpp -DHAVE_CONFIG_H -L/...libs -lsomelib && ld ...? the main thing why I need an IDE is the following: when I realize I made the mistake of writing x[0] instead of x[i], I just stop debugging, edit that line, and hit F5/F9/F6 again to test that change. – Luka Ramishvili Apr 28 '11 at 05:39
  • but I agree in everything - I too recently switched from Visual Studio to Eclipse CDT and have learned about using gcc, Makefile, ld, binutils etc, just because I _want_ to know how to use it. – Luka Ramishvili Apr 28 '11 at 05:45
  • 2
    @Luke Edit-continue debugging never really worked for C++ even in an IDE. I don’t know whether even the current version of Visual Studio really supports it for all cases. Neither Xcode nor Eclipse do. – Konrad Rudolph Apr 28 '11 at 12:28
  • 1
    @Konrad My two cents - if you want to deal with renaming in scope in Vim, it's trivial to select the lines within a class or function and do a search/replace. (Vim lets you do this visually with 'V'.) If it's something like a class name that has global scope, you can search and replace globally. This, combined with native regex support for searching in vi, comes in pretty handy (if you know what you're doing). The power is the same; it's just that, instead of clicking, you type a few characters. It's really just personal preference. @Luka That's what makefiles are for - save, build, run. – jedd.ahyoung May 19 '11 at 03:15
  • 2
    @lunchmeat317 No, that’s still fundamentally different, and vastly inferior, to the identifier renaming offered by IDEs. The difference is that an IDE can find all the names *that refer to the same entity*, and rename only those, project wide. There is no way of approximating this behaviour in Vim. For example, while Vim lets you select the scope of a single class, a same name can still refer to different entities in that class (e.g. name hiding via local variables), or it can be used in a different part of the project. – Konrad Rudolph May 19 '11 at 08:19
  • Here's one vim plugin/script that advertises refactoring for C/C++: http://www.vim.org/scripts/script.php?script_id=2087 – Alexander May 19 '11 at 13:35
  • 1
    @Alexander But this plugin freely admits that it does *not* parse the code, and hence doesn’t do scope-aware refactoring. So it has all the downsides I mentioned. – Konrad Rudolph May 19 '11 at 14:00
  • @Konrad Rudolph The whole point of IDE is that it simplifies the development process by bringing all aspects of the build/debug and code maintainability, defect management & source control under one integrated UI. If I wanted to learn how to make my life miserable I would definitely do what you did. Turns out there aren't any decent IDE's for Linux/Unix. They either lack source control integration, defect management, or require plugins that take 6 hours to install, with or without partial support for basic necessities. Basic debugging is also a weak point. I am highly disappointed.. :( :( :( – bleepzter Nov 03 '11 at 13:36
  • 1
    @bleepzter I agree with your point about an IDE. But this **is** what Unix gives you. As dsm said, Unix is an IDE, *all* of it. Compared to “conventiona” IDEs it has the disadvantage of being harder to learn, but it definitely has the advantages of being more powerful *and* more productive once you’ve learned the rudiments. The weak points you’ve mentioned are always a function of your ability, *not* of Unix’. Debugging works just fine, and is extremely powerful due to the possibility of using macros. Source control integration is better than anything on Windows. – Konrad Rudolph Nov 03 '11 at 17:08
  • Yes, UNIX is an IDE, but the components are not well integrated. Being at the point to call UNIX an IDE, I don't see a reason why we shouldn't call Windows an IDE too. After all it has VIM, Powershell (no worries, *sh works there too) and lots of compilers. Sorry to bring you back to reality but: UNIX is an OS, VIM is an editor with lots of features. You can find your own workflow using just these tools. Of course in conjunction with some build system, a compiler and a debugger. But after all, Eclipse has all those tightly integrated. – Philip Feb 16 '12 at 11:53
  • If you max Eclipse out, you rarely have to use *sh, grep and the like. Moreover, I want to see how you debug a large, multithreaded C++ program with VIM+gdb. – Philip Feb 16 '12 at 11:56
  • 2
    @Philip “If you max Eclipse out” – yes, but why would I want to do that? The shell is far superior. “the components are not well integrated” – you gotta be kidding me. To this day, shell components are the most modular, combinable system I’ve ever worked with. Not perfect by a long shot, but *extremely* good, certainly much more powerful than any IDE. – Konrad Rudolph Feb 16 '12 at 11:59
  • @KonradRudolph: So back to my question: how do you like finding bugs in multithreaded C++ programs using the shell? Or how do you like 3-way-merging using the shell? Or for some historical evidence: Perl evolved because of Shell's shortcomings, weird editors like Sam and Acme were created because *sh+VIM are not superior to an actual IDE. – Philip Feb 16 '12 at 15:39
  • @Philip Granted, debugging multithreaded programs in `gdb` sucks but this is a particular shortcoming of a particular tool. It’s pure coincidence that other debuggers can do this better, it’s got nothing to do with them being integrated in IDEs. As for three-way-merging, what’s wrong with using vim for that? Or if you prefer, use a graphical tool. Nobody objects to that. But why do you need a fixed IDE for that? I can’t comment on these “weird editors” but they don’t really underline your argument for me. – Konrad Rudolph Feb 16 '12 at 15:49
  • @Philip In fact, two points about Sam: It was developed 30 years ago. The shell, editors and other tools have evolved since then, you know. Furthermore, the Wikipedia article states that “Sam follows a classical modular Unix aesthetic” which sounds very much in favour of my original point. – Konrad Rudolph Feb 16 '12 at 15:51
  • @KonradRudolph Given that IDE is not the way to go when developing software in linux, can you please mention a good tutorial to cover the knowledge base you mention above for the non-linux educated developer? – ppp Feb 16 '12 at 23:43
  • @KonradRudolph: In fact Eclipse CDT uses the gdb. (As probably every other Debugging GUI on Linux.) Because of the nice GUI it's much easier to track multiple threads. But if it was only the GUI, one could stick with KDE's debugger frontend or DDD. But here comes the IDE part: the debugger is tightly integrated with the code editor. In Java this goes so far that you can easily edit code while your program is running. Sure the Shell has evolved but still it's only loosely integrated into X. – Philip Feb 17 '12 at 10:40
  • I was involved in two seperate projects in two seperate companies where we U-turned from an IDE after a year or so, to exclusively use hand edited makefiles, and this was on Windows. Today I am still not a user of IDEs such as Eclipse. The primary reasons for us switching were to automate a "clean room" build from version control *and* facilitate easy tweaking of compiler options, en-masse, across *multiple* projects. These are two very important requirements and can easily be facilitated using scripts and hand edited build files. For these reasons I would probably never go back to an IDE. – ScrollerBlaster Mar 01 '12 at 23:01
  • @ScrollerBlaster To be fair, this *can* be done in a modern IDE (i.e. VS has a fully-fledged automated build system called MSBuild). But it’s much easier using shell scripts. – Konrad Rudolph Mar 01 '12 at 23:28
  • I would like to see you debuging a big project using only gdb. There are so many features in VS that you probably are not aware about which may incredibile increase your performance. I am not saying that you cannot achieve the same result using make, gdb, valgrind, vi, etc. but it will be much more time consumig. It is even opinion of my friend who is a linux fan that use linux on daily basis. – nosbor Nov 13 '15 at 19:08
  • @nosbor I have. And people debug the Linux kernel in gdb routinely. I think you seriously underestimate how powerful gdb is. Oh, and incidentally I've used Visual Studio extensively, and I really like it for debugging. I'm not trying to argue that it isn't powerful — it's probably as powerful as gdb in its own way, and certainly more convenient. – Konrad Rudolph Nov 13 '15 at 19:44
  • refactoring? silly noobs lrn2regexp – MickLH Jan 15 '16 at 04:55
  • 1
    @quant_dev: "My brain is too good to be wasted on such trivial stuff" -> You know that renaming things is not the gist of refactoring? The gist is to have tests in place and then be able to do fancy things like dependency inversion, replacing types with polymorphism, removing middle man, all of that: http://refactoring.com/catalog/ , how much of that does your IDE automate? The danger I see in refactoring IDEs is that people like you tend to think that refactoring is merely renaming symbols and converting variables to parameters; you are limiting yourself. – Sebastian Mach Mar 03 '16 at 10:51
  • I fully agree with all of this only if programmer don't use Visual Studio properly, otherwise he will find a paradise in VS... – nosbor Apr 11 '16 at 20:31
  • The problem here is that IDE stands for Integrated Development Environment. While one may call GNU/Linux including the GNU toolchain a development environment, it is not **integrated** in a user-interface-oriented kind of way, like an IDE is. – Archimaredes Jun 19 '16 at 14:59
  • @Archimaredes Why should that be a problem? Apart from that, there's actually a tremendous amount of integration, in particular in the way POSIX was designed. Modern IDEs are still trying to copy that basic principle. – Konrad Rudolph Jun 19 '16 at 15:01
  • For C++, kdevelop5 these days with its clang intellisense is an excellent choice for C++. Also there is eclipse cdt – Johannes Schaub - litb Nov 03 '16 at 11:04
86

My personal favorite is the CodeLite 2.x IDE.

see: http://www.codelite.org

The decision to use CodeLite was based on a research regarding the following C++ IDE for Linux:

  • Eclipse Galileo with CDT Plugin
  • NetBeans 6.7 (which is also the base for the SunStudio IDE)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

After all I have decided to use CodeLite 2.x.

Below I have listed some Pros and Cons regarding the mentioned C++ IDEs. Please note, that this reflects my personal opinion only!

EDIT: what a pity that SOF doesn't support tables, so I have to write in paragraphs ...

Eclipse Galileo with CDT Plugin

Pros:

  • reasonable fast
  • also supports Java, Perl(with E.P.I.C plugin)
  • commonly used and well maintained
  • also available for other OS flavours (Windows, MacOS, Solaris, AIX(?))

Cons:

  • GUI is very confusing and somewhat inconsistent - not very intuitive at all
  • heavy weight
  • Only supports CVS (AFAIK)

NetBeans 6.7 (note this is also the base for the SunStudio IDE)

Pros:

  • one of the most intuitive GUI I have ever seen
  • also supports Java, Python, Ruby
  • integrates CVS, SVN, Mercurial
  • commonly used and well maintained
  • also available for other OS flavours (Windows, MacOS, Solaris)

Cons:

  • extremly slow
  • heavy weight
  • uses Spaces for indentation, which is not the policy at my work. I'm sure this is configurable, but I couldn't find out how to to that

KDevelop4 (note: I did not much testing on it)

Pros:

  • commonly used on Linux
  • integrates CVS, SVN, Mercurial

Cons:

  • the GUI looks somewhat old fashioned
  • heavy weight
  • very specific to the KDE environment

CodeBlocks 8.02 (note: I did not much testing on it)

Pros:

  • reasonable fast

Cons:

  • the GUI looks somewhat old fashioned (although it has a nice startup screen)
  • the fonts in the editor are very small
  • some icons (e.g. the debugger related icons starting/stepping) are very small
  • no source control integration

CodeLite 2.x (note: this is my personal favorite)

Pros:

  • the best, modern looking and intuitive GUI I have seen on Linux
  • lightweight
  • reasonable fast
  • integrates SVN
  • also available on other OS flavours(Windows, MacOS, Solaris(?))

Cons:

  • no CVS integration (that's important for me because I have to use it at work)
  • no support for Java, Perl, Python (would be nice to have)
  • 14
    Eclispe has support for Hg, Git, SVN and others via plugins. And startup/splash screens suck huge balls. They suck down resources and offer very little in benefit. And they usually pop up in front of whatever I'm working on while waiting for the app to load. PortableApps and Eclipse need to get rid of them. – Chris K Mar 29 '10 at 19:28
  • 4
    Codelite got the same keyboard shortcut as Visual Studio for debugging, making it very user-friendly for Visual addicts. – Raoul Supercopter Apr 02 '10 at 15:19
  • May be beating an old horse here, but IMO eclipse's GUI is really unmatched. Yes, it's difficult to learn at first, but it's kind of like Vi where the productivity starts to skyrocket after you've climbed the steep learning curve. To prove a point, try pressing Ctrl+3 -- one of the very awesome features in eclipse IMO. – kizzx2 Jul 19 '10 at 02:11
  • "Cons: uses Spaces for indentation [...] I'm sure this is configurable, but I couldn't find out how to to that." That shows, you haven't really used to tool, otherwise, you'd have eventually found the option. – Johan Boulé Jul 20 '10 at 15:54
  • 5
    CodeLite is amazing, like chewing on dentyne ice gum. It'll leave a fresh and minty taste in your mouth. Eclipse, while being featureful, also gives you this vomit after taste when you use it. I know this sounds childish to say, but its really the best metaphor for explaining the "feel" of using them. I'm sure others will agree with me. – Didier A. Feb 24 '11 at 11:03
  • Eclipse Indigo (3.7) now supports Git out of the box (can't attest to how well it works, I haven't used it) – Nathan Moos Sep 28 '11 at 02:05
  • CodeLite appears to now support CVS: http://codelite.org/Main/ReadMore#toc9 – James Ko Nov 22 '15 at 21:01
  • Crap ide, doesn't work out of the box. – Pavel Oct 24 '16 at 12:31
75
  1. Code::Blocks
  2. Eclipse CDT

Soon you'll find that IDEs are not enough, and you'll have to learn the GCC toolchain anyway (which isn't hard, at least learning the basic functionality). But no harm in reducing the transitional pain with the IDEs, IMO.

Imran
  • 76,055
  • 23
  • 93
  • 124
  • +1 for codeblocks and yea, you'll definitely want to learn at least how to compile and run your programs from a shell, cause code::blocks has some blimishes. – Earlz Mar 29 '10 at 18:14
  • Eclipse is not at all lightweight IMHO, Code::Blocks... just – rubenvb Jun 21 '10 at 15:10
  • ... Code::Blocks just fails to parse the c++ language – Johan Boulé Jul 20 '10 at 15:38
  • 7
    -1 for code blocks. -1 for eclipse. They both change their UI's during debugging. To the point where a novice user usually feels lost. They both can't debug fork. They both have nasty problems with SVN/CVS integration. (Latest Eclipse in tandem with Subclipse is broken in Gnome as of 4/28/11 and crashes every 10 minutes). Setting up source control is a nightmare and integration with these IDE's is just as difficult. – bleepzter Apr 28 '11 at 21:28
  • 4
    @bleepzter -1 for using SVN/CVS to start with ;) – OneOfOne Nov 02 '11 at 08:05
  • @OneOfOne For a linux newbie what choices do you have? I mean seriously? I come from TFS/Sharepoint (occasionaly Source Gear Vault) based Enterprise Development mindset. Well, I can't run this on Linux, can I? And both SVN and CVS suck. And so do a variety of others. – bleepzter Nov 03 '11 at 13:40
  • 1
    Mercurial, Git and Bazaar which are vastly superior in every way. – OneOfOne Nov 04 '11 at 04:40
  • I think in is cheaper to buy commercial IDE (like CLion), then learn glitches of Eclipse/CDT. I just installed last Eclipse Mars + last CDT and 50% of codeformatting and code highlighting features I need have glitches. It seems Eclipse has not any regression testing at all. – Dzenly Nov 01 '15 at 06:26
  • Codeblocks fails to let you watch correctly when debugging : a decent C++ IDE&debugger&compiler&codeStaticAnalyser should, when debugging, let you watch variables values as if C++ was JavaScript (which is very cool with JavaScript and many dynamic langages is that the 'eval' function is itself nearly a debugger). VisualC++'s debugger nearly does that, this is why it is in my opinion the prefered C++ IDE, while codeblocks&gcc&gdb doesn't. VisualC++ is nearly a good reason to install VMWare with windows on your linux. – reuns Nov 08 '15 at 13:23
66

A quick answer, just to add a little more knowledge to this topic:
You must definitely check out NetBeans. Netbeans 6.7 has the following features:

  • C/C++ Projects and Templates: Supports syntax highlighting, automatic code completion, automatic indentation.
  • It has a C/C++ Debugger
  • Supports Compiler Configurations, Configuration Manager and Makefile Support (with a Wizard).
  • It has a Classes Window, a Usages Window and a File Navigation Window (or panel).
  • A Macro expansion view, and also tooltips.
  • Support for QT development.

I think it's a perfect (and far better) Visual Studio substitution, and a very good tool to learn C/C++.

Good Luck!

John Carter
  • 50,377
  • 25
  • 100
  • 137
Rodrigo Amaya
  • 4,856
  • 9
  • 48
  • 57
  • I've never used Netbeans for C++ development, but it is an excellent IDE for Java development. – James McMahon Mar 29 '10 at 18:09
  • 2
    It's also really good for c++. It's got the best language parser ever. – Johan Boulé Jul 20 '10 at 15:41
  • 1
    I enjoyed Netbeans much more than Eclipse for c++ development. – Thomas Langston Sep 14 '10 at 14:49
  • 9
    NetBeans is so much more enjoyable then Eclipse, I really wish more people start to realize that. – Didier A. Feb 24 '11 at 10:53
  • 1
    After fighting with Eclipse for weeks I found this, switched to NetBeans and Thank you! It has a nicer interface, is more responsive, inuitive and customisable. Beats Eclipse hands down – Frederik May 20 '11 at 15:37
  • 1
    Another vote here for how much better NetBeans is than Eclipse. It also has by far the best Vim emulation (as a plugin) that I've ever used. – thoughton Mar 03 '12 at 16:09
  • 1
    "it has a C++ debugger". did you already look to VisualC++'s debugger ? It 's really good, nearly as good as dynamic/script langages debuggers. in 2015, decently, we cannot debug our programs with printf anymore.. – reuns Nov 08 '15 at 13:29
  • I used Eclipse for a few months before I ditched it for NetBeans and never looked back. – siliconrockstar Dec 18 '15 at 23:54
52

At least for Qt specific projects, the Qt Creator (from Nokia/Trolltech/Digia) shows great promise.

fat
  • 5,038
  • 4
  • 37
  • 62
Henrik Hartz
  • 3,589
  • 1
  • 25
  • 28
32

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.

My first source were actually the tools' man pages. Just type

$ man toolname

on the command line ($ here is part of the prompt, not the input).

Depending on the platform, they're quite well-written and can also be found on the internet. In the case of make, I actually read the complete documentation which took a few hours. Actually, I don't think this is necessary or helpful in most cases but I had a few special requirements in my first assignments under Linux that required a sophisticated makefile. After writing the makefile I gave it to an experienced colleague who did some minor tweaks and corrections. After that, I pretty much knew make.

I used GVIM because I had some (but not much) prior experience there, I can't say anything at all about Emacs or alternatives. I find it really helps to read other peoples' .gvimrc config file. Many people put it on the web. Here's mine.

Don't try to master all binutils at once, there are too many functions. But get a general overview so you'll know where to search when needing something in the future. You should, however, know all the important parameters for g++ and ld (the GCC linker tool that's invoked automatically except when explicitly prevented).

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

Syntax highlighting: yes, and a much better one than Visual Studio. Code completion: yes-ish. First, I have to admit that I didn't use C++ code completion even in Visual Studio because (compared to VB and C#) it wasn't good enough. I don't use it often now but nevertheless, GVIM has native code completion support for C++. Combined with the ctags library and a plug-in like taglist this is almost an IDE.

Actually, what got me started was an article by Armin Ronacher. Before reading the text, look at the screenshots at the end of it!

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

Yes. But this is the same for Visual Studio, isn't it (I've never used Whole Tomato)? Of course, the syntax highlighting will show you non-matching brackets but that's about all.

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

I use gdb which is a command-line tool. There's also a graphical frontend called DDD. gdb is a modern debugging tool and can do everything you can do in an IDE. The only thing that really annoys me is reading a stack trace because lines aren't indented or formatted so it's really hard to scan the information when you're using a lot of templates (which I do). But those also clutter the stack trace in IDEs.

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

You shouldn't even try to compare a modern, full-feature editor like Emacs or GVIM to Notepad. Notepad is an embellished TextBox control, and this really makes all the difference. Additionally, working on the command line is a very different experience in Linux and Windows. The Windows cmd.exe is severely crippled. PowerShell is much better.

/EDIT: I should mention explicitly that GVIM has tabbed editing (as in tabbed browsing, not tabs-vs-spaces)! It took me ages to find them although they're not hidden at all. Just type :tabe instead of plain :e when opening a file or creating a new one, and GVIM will create a new tab. Switching between tabs can be done using the cursor or several different shortcuts (depending on the platform). The key gt (type g, then t in command mode) should work everywhere, and jumps to the next tab, or tab no. n if a number was given. Type :help gt to get more help.

Konrad Rudolph
  • 482,603
  • 120
  • 884
  • 1,141
  • @confuzatron: No, I use gdb for several reasons. Most importantly, I usually work without any X server running. Also, I'm a bit uncomfortable about the fact that DDD hasn't seen any update in quite a long time. On the other hand, project ownership has just changed and there seem to be changes afoot. – Konrad Rudolph Nov 05 '08 at 20:15
  • Thanks for the tab info wrt gvim, never new that :) – Letholdrus Jul 22 '11 at 06:25
  • VS2010 highlights syntax errors without compilation. – Candy Chiu Oct 20 '11 at 16:42
  • @Candy true, VS2010 changed a lot of things in this regard and added advanced features for background compilation. But gvim has also added a lot of features via plugins in the meantime. In particular, you can probably get syntax error highlighting without compilation via the `clang_complete` plugin now. This answer is from 2009 and some parts are outdated. But there have been improvements on all sides so it more or less evens out. – Konrad Rudolph Oct 20 '11 at 20:08
25

Not to repeat an answer, but I think I can add a bit more.

Slickedit is an excellent IDE.

It supports large code-bases well without slowing down or spending all its time indexing. (This is a problem I had with eclipse's cdt). Slickedit's speed is probably the nicest thing about it, actually.
The code completion works well and there are a large amount of options for things like automatic formatting, beautification and refactoring.
It does have integrated debugging.
It has plug-in support and fairly active community creating them.
In theory, you should be able to integrate well with people doing the traditional makefile stuff, as it allows you to create a project directly from one, but that didn't work as smoothly as I would have liked when I tried it.
In addition to Linux, there are Mac and Windows versions of it, should you need them.

rck
  • 1,890
  • 2
  • 22
  • 22
23

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.

There really isn't a "good" IDE for Linux. Eclipse is not very good for C/C++ (CDT is improving, but is not very useful yet). The others are missing all the features you are going to be looking for.

It really is important to learn how all the individual tools (gcc, make, gdb, etc.) work. After you do so, you may find the Visual Studio way of doing things to be very limiting.

Kristopher Johnson
  • 76,675
  • 54
  • 235
  • 299
  • Eclipse CDT "not very useful yet?" Elaboration would be helpful. I find it extremely useful (and easy to use). – John Zwinck Nov 23 '09 at 00:03
  • "not very useful yet": autocomplete often doesn't work, navigating to declarations or uses of functions doesn't work, syntax highlighting doesn't always work, refactoring doesn't work, etc. It's little better than using vi. The GDB frontend UI is the only thing that makes it worth using at all, IMHO. – Kristopher Johnson Nov 23 '09 at 15:31
  • I haven't really tried refactoring with the CDT, but the other things seem to work. I will note that I run Eclipse with some pretty big max memory usage configuration parameters (I have 8-12 GB of RAM), but it seems fine. – John Zwinck Nov 24 '09 at 00:49
  • Last time I tried Eclipse CDT, the syntax/semantics parser for the auto-completion made the whole IDE freeze for 8 seconds every time it got invoked. It made the whole feature useless. I can't believe the thing didn't run in its own thread. This was two years ago, so it's hopefully fixed now. (right?) –  Dec 11 '09 at 19:45
  • I find CDT awesome for my forays into QT and Boost. On windows with Mingw it has it's issues, but in a proper Posix environment auto-complete works great! The navigating to declarations is actually the one glaring hole. But considering that C++ can have multiple identical declarations, I'm not surprised. This is a harder problem to solve than in Java. – Chris K Mar 29 '10 at 19:26
  • you cannot make real programs (more than 10000 lines) with old-school text editors separated from the debugger and the code analyser.... – reuns Nov 08 '15 at 13:33
  • @user1952009 A lot of of "real programs" with a lot more than 10000 lines were written before IDEs were even invented. – Kristopher Johnson Nov 08 '15 at 14:22
  • troll ? obviously, you nearly can't make programs without a computer, even if some algorithms where written before computers where even invented... don"t troll people, I am just saying that this discussion doesn't mention what is the most important : IDE is there to help coding, not to make it harder. a modern IDE means : a good compiler giving easy to understand (and to click) error messages + syntax highlighter + code completion + debugger (+ conditionnals breakpoints) + watches + eval function (small interpreter for watches + modify watches) + runtime code/perf analyser + .... – reuns Nov 09 '15 at 21:25
  • and I forgot the IDE's search engine which is VERY important in more than 10000 lines projects. – reuns Nov 09 '15 at 21:29
18

Just a quick follow up for this question...

It's been a month since I started using Vim as my main 'GUI' tool for programming C++ in Linux. At first the learning curve was indeed a bit steep but after a while and with the right options turned on and scripts running I really got the hang of it!

I love the way how you can shape Vim to suite your needs; just add/change key mappings and Vim is turned into a highly productive 'IDE'.

The toolchain to build and compile a C++ program on Linux is also really intuitive. make and g++ are the tools you'll use.

The debugger ddd is however not really that good, but maybe that's because I haven't had the time to master it properly.

So to anyone who is, or was looking for a good C++ IDE in Linux, just like I was, your best bet lays with the standard available tools in Linux itself (Vim, g++, ddd) and you should really at least try to use them, before looking for sonething else...

Last but not least, I really want to thank konrad for his answer here, It really helped me find my way in the Linux development environment, thank you!

I'm also not closing this question, so people can still react or maybe even add new suggestions or additions to the already really nice answers...

Community
  • 1
  • 1
sven
  • 17,326
  • 10
  • 48
  • 62
  • Can you get IntelliSense-ish features to work in Vim+ctags? Not really just auto-complete, but context-sensitive information such as parameter list for function, etc.? – kizzx2 Jul 19 '10 at 02:07
  • @kizzx2: [Yes](http://stackoverflow.com/questions/4823758/vim-code-completion), there [are](http://design.liberta.co.za/articles/code-completion-intellisense-for-cpp-in-vim-with-omnicppcomplete/) many [options](http://www.vim.org/scripts/script.php?script_id=1879). – Fred Nurk Jun 07 '11 at 00:40
18

Checkout Netbeans, it's written in Java so you'll have the same environment regardless of your OS, and it supports a lot more than just C++.

I'm not going to try to convince you, because I think IDEs can be a very personal choice. For me it improves my productivity by being fast, supporting the languages I code in and has the standard features you'd expect from an IDE.

Steve M
  • 10,311
  • 12
  • 48
  • 63
  • 5
    I just can add my +1 to this. netbeans has the best c++ language parser i've seen in an ide ; beats eclipse's cdt. – Johan Boulé Jul 20 '10 at 15:36
15

I recommend you read The Art Of UNIX Progranmming. It will frame your mind into using the environment as your IDE.

dsm
  • 9,895
  • 35
  • 70
12

Shorter answer is: choosing whatever "editor" you like, then use GDB console or a simple GDB front end to debug your application. The debuggers come with fancy IDEs such as Netbeans sucks for C/C++. I use Netbeans as my editor, and Insight and GDB console as my debugger.

With insight, you have a nice GUI and the raw power of GDB.

As soon as you get used to GDB commands, you will start to love it since you can do things you will never be able to do using an GUI. You can use even use Python as your script language if you are using GDB 7 or newer version.

Most people here paid more attentions to the "Editors" of the IDEs. However, if you are developing a large project in C/C++, you could easily spend more than 70% of your time on the "debuggers". The debuggers of the fancy IDEs are at least 10 years behind Visual Studio. For instance, Netbenas has very similar interfaces with Visual Studio. But its debugger has a number of disadvantages compared to Visual Studio.

  1. Very slow to display even a array with only a few hundreds of elements
  2. No highlighting for changed value ( By default, visual studio shows changed values in the watch windows in red)
  3. Very limited ability to show memory.
  4. You cannot modify the source code then continue to run. If a bug takes a long time to hit, you would like to change the source and apply the changes live and continue to run your application.
  5. You cannot change the "next statement" to run. In Visual Studio, you can use "Set Next Statement" to change how your application runs. Although this feature could crash your application if not used properly, but it will save you a lot of time. For instance, if you found the state of your application is not correct, but you do not know what caused the problems, you might want to rerun a certain region of the your source codes without restarting your application.
  6. No built-in support for STL such as vector, list, deque and map etc.
  7. No watch points. You need to have this feature, when you need to stop your application right at the point a variable is changed. Intel based computers have hardware watch points so that the watch points will not slow down your system. It might takes many hours to find some hard-to-find bugs without using watch points. "Visual Studio" calls "watch pointer" as "Data BreakPoint".

The list can be a lot longer.

I was so frustrated by the disadvantages of the Netbeans or other similar IDEs, so that I started to learn GDB itself. I found GDB itself are very powerful. GDB does not have all the "disadvantages" mentioned above. Actually, GDB is very powerful, it is even better than Visual Studio in many ways. Here I just show you a very simple example.

For instance, you have a array like:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

When your application stops, and you want to examine the data in IdAndValues. For instance, if you want to find the ordinals and values in the array for a particular "ID", you can create a script like the following:

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

You can use all variables in your application in the current context, your own variables (in our example, it is $i), arguments passed (in our example, it is $arg0) and all GDB commands (built-in or user defined).

Use PrintVal 1 from GDB prompt to print out values for ID "1"

By the way, NetBeans does come with a GDB console, but by using the console, you could crash Netbeans. And I believe that is why the console is hidden by default in NetBeans

  • Good point. But unfortunately GDB has an extremely steep learning curve. I’ve been using it for years now and I still have never used macros, and (although I know this is *possible* via macros!) any STL code I throw at it cannot be debugged any better than in modern IDEs. – Konrad Rudolph Mar 29 '10 at 18:01
  • I spent 2 days to master most of commands in GDB. Once you know the raw power of GBD, you will never look back. It will save you a lot of time when you fix the hard-to-find bugs. – Charles Zhang Apr 04 '10 at 23:28
11

I am using "Geany" found good so far, its fast and light weight IDE.

Among Geany’s features are:

  • Code folding
  • Session saving
  • Basic IDE features such as syntax highlighting, tabs, automatic indentation and code completion
  • Simple project management
  • Build system
  • Color picker (surprisingly handy during web development)
  • Embedded terminal emulation
  • Call tips
  • Symbol lists
  • Auto-completion of common constructs (such as if, else, while, etc.)
TheCottonSilk
  • 8,134
  • 2
  • 24
  • 37
10

If you like Eclipse for Java, I suggest Eclipse CDT. Despite C/C++ support isn't so powerful as is for Java, it still offers most of the features. It has a nice feature named Managed Project that makes working with C/C++ projects easier if you don't have experience with Makefiles. But you can still use Makefiles. I do C and Java coding and I'm really happy with CDT. I'm developing the firmware for a embedded device in C and a application in Java that talks to this device, and is really nice to use the same environment for both. I guess it probably makes me more productive.

jassuncao
  • 4,595
  • 3
  • 26
  • 35
9

I love how people completely miss the request in the original question for an IDE. Linux is NOT an IDE. That's just not what those words mean. I learned c and c++ using vi and gcc and make, and I'm not saying they aren't adequate tools, but they are NOT an IDE. Even if you use more elaborate tools like vim or emacs or whatever fancy editor you want, typing commands on a command line is not an IDE.

Also, you all know make exists as part of visual studio right? The idea that an IDE is "limiting" is just silly if you can use the IDE to speed some things, yet are still able to fall back on command line stuff when needed.

All that said, I'd suggest, as several above have, trying Code blocks. Its got decent code highlighting, a pretty effortless way to create a project, code it, run it, etc, that is the core of a real IDE, and seems fairly stable. Debugging sucks...I have never seen a decent interactive debugger in any linux/unix variant. gdb ain't it. If you're used to visual studio style debugging, you're pretty much out of luck.

Anyway, I'll go pack my things, I know the one-view-only linux crowd will shout this down and run me out of town in no time.

SomeGuy
  • 3
  • 1
  • 3
  • You have a point. It is not an IDE as we know it. However it is interesting that the OP voted for that answer! Nailing my colours to the mast: I'm a fan of command line makefiles. – ScrollerBlaster Mar 01 '12 at 22:48
  • Finally somebody who has some brain... I guess the others just code trivial stuff if they can do everything with emacs/vim. – Pippo Dec 11 '16 at 20:38
8

make + vim + gdb = one great IDE

Matt Fichman
  • 4,900
  • 4
  • 34
  • 54
7

I really suggest codeblocks. It's not as heavy as Eclipse and it's got Visual Studio project support.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
DavidG
  • 1,767
  • 4
  • 20
  • 31
7

I quite like Ultimate++'s IDE. It has some features that were designed to use with their own library (which, BTW, is quite a nice toolkit if you don't want to buy on either GTK+ or QT) but it works perfectly well with general C++ projects. It provides decent code completion, good syntax colouring, integrated debugging, and all other features most modern IDEs support.

Jason Baker
  • 171,942
  • 122
  • 354
  • 501
dguaraglia
  • 5,274
  • 1
  • 22
  • 23
  • wow! Regarding the screenshots that really looks amazing! I will definitely give it a try. Do you know if I have to pay for it? (That's not quite clear on the Ultimate++ website) –  Dec 12 '09 at 11:37
  • Nope, it's free as in "speech", "beer" and "ride". They are even quite open about accepting patches, and release very often, so it is as open source as it gets :) – dguaraglia Dec 12 '09 at 15:53
6

Perhaps the Linux Tools Project for Eclipse could fill your needs?

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.

Jean Hominal
  • 15,333
  • 4
  • 51
  • 85
teZeriusz
  • 81
  • 2
  • 8
6

On Linux there are plenty of IDEs:

In my experience, the most valuable are Eclipse and Qt Creator. Both provide all "standard" features (i.e., autocompletion, syntax highlightning, debugger, git integration). It is worth noting that Eclipse also provides refactoring functionalities, while Qt Creator provides integration with Valgrind and support for deployment on remote targets.

Also the commercial CLion IDE seems preety good (but I've not used it extensively).

Claudio
  • 9,427
  • 3
  • 28
  • 67
5

I use Eclipse CDT and Qt Creator (for Qt applications).

That's my preferences. It's a very suggestive question and there is as many answers as there is developers. :)

Etienne Savard
  • 4,553
  • 6
  • 29
  • 45
5

Although I use Vim, some of my co-workers use SlickEdit which looks pretty good. I'm not certain about integrated debugging because we wouldn't be able to do that on our particular project anyway.

SlickEdit does have good support for navigating large code bases, with cross referencing and tag jumping. Of course it has the basic stuff like syntax highlighting and code completion too.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Greg Hewgill
  • 828,234
  • 170
  • 1,097
  • 1,237
5

I hear Anjuta is pretty slick for Gnome users. I played a bit with KDevelop and it's nice, but sort of lacking featurewise. Code::Blocks is also very promising, and I like that one best.

wvdschel
  • 11,590
  • 14
  • 38
  • 44
5

I've previously used Ultimate++ IDE and it's rather good.

Hernán
  • 4,261
  • 2
  • 28
  • 45
5

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.

I'd mostly agree, but the problem is also one of perception: we forget how difficult it was to become productive in any chose IDE (or other environment). I find IDE's (Visual Studio, NetBeans, Eclipse) amazingly cumbersome in so many ways.

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.

I'd second that; use Emacs as my primary editor on both Linux and on MSW (XP2,W2K). I would disagree that it has a steep learning curve, but would say that because of the huge number of features it has a long learning curve. You can be productive within a short time, but if you want you can learn new features of it for years to come.

However -- don't expect all the features of Emacs to be available on drop-down menus, there is just too much functionality to find it there.

As I metioned, I've used GNU Emacs on MSW for years. And it's always worked well with Visual Studio until I "upgraded" to 2008; now it sometimes delays many seconds before refreshing files from disk. The main reason for editing in the VS window is the "Intellisense" code completion feature.

NVRAM
  • 6,347
  • 8
  • 38
  • 44
5

geany I recommend

sven
  • 17,326
  • 10
  • 48
  • 62
5

Sun Studio version 12 is a free download(FREE and paid support available) -- http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0.

I'm sure you have code completion and debugging support including plugin support in this IDE.

Sun Studio is available for Linux as well as Solaris. forums : http://developers.sun.com/sunstudio/community/forums/index.jsp. Sun Studio Linux forums : http://forum.sun.com/forum.jspa?forumID=855

I'll be eager to hear your feedback on this tool.

BR,
~A

anjanb
  • 11,266
  • 16
  • 69
  • 99
4

SlickEdit. I have used and loved SlickEdit since 2005, both on Windows and on Linux. I also have experience working in Visual Studio (5, 6, 2003, 2005) and just with Emacs and command line. I use SlickEdit with external makefiles, some of my teammates use SlickEdit, others use Emacs/vi. I do not use the integrated debugger, integrated version control, integrated build system: I generally find too much integration to be real pain. SlickEdit is robust (very few bugs), fast and intuitive. It is like a German car, a driver's car.

The newest versions of SlickEdit seem to offer many features that do not interest me, I am a little worried that the product will become bloated and diluted in the future. For now (I use V13.0) it is great.

Radim Cernej
  • 851
  • 10
  • 20
3

For me Ultimate++ seems to be the best solution to write cross-os program

3

If you were using vim for a long time, then you should actually make that as your IDE. There are a lot of addons available. I found several of those as pretty useful, and compiled it here, have a look at it.

And a lot more in the vi / vim tips & tricks series over there.

thegeek
  • 2,238
  • 2
  • 13
  • 10
3

I have been using Anjuta for my university projects about 3 years ago. I haven't been using it lately. But it was nice back then, so should be better with the latest releases.

Varuna
  • 1,148
  • 1
  • 17
  • 19
  • It's been much improved since then. Many more integrated features. I really like it now, as it still doesn't have bloat, but is starting to have all of the useful features of an IDE. – Jeremy Salwen Jul 05 '11 at 17:57
3

For CMake based projects i use Jetbrains CLion

For Autotools based projects the already mentioned Qtcreator.

For everything else: VIM + YouCompleteMe

arved
  • 3,830
  • 3
  • 23
  • 47
2

Use Mono-Develop. It is very similar to Visual Studio. It works cross-platform and is Awesome!!

Michael Brown
  • 2,231
  • 1
  • 17
  • 34
2

I prefer using Emacs and Vim for writing C++ code. When I need to use an IDE, I use CodeBlocks.

2

I like SciTE as a basic editor for C++/Python on Linux. It has keyboard bindings similar to VC so you do not have to reprogram your cut-and-paste fingers.

I use it together with Git for source code control and the very useful 'git grep' command for searching in your code base.

I played with Eclipse CDT but my source codebase was to big for it and I spend too much time waiting on the IDE. If your project is smaller it may be good for you though.

Jeroen Dirks
  • 7,142
  • 11
  • 47
  • 66
1

I'm glad you seem to be working it out with vim. But I have to say, I'm a bit mystified about how you already "really like Eclipse for Java", implying that you're already familiar with how it works. In that case, why wouldn't you also use it for C++? CDT meets every requirement you've mentioned.

kbluck
  • 9,998
  • 4
  • 21
  • 24
  • 4
    The Eclipse C++ IDE is crippled beyond usefulness when compared to the Java equivalent. Seriously, it is hopeless. All the memory muscle tricks learned in the Java version inexplicably fail in the C++ one, making you much less productive. Like Superman with kryptonite in his undies. – richq Feb 20 '09 at 21:34
1

Having been raised on Visual Studio, I've found the relatively young Code::Blocks to be very familiar.

Drew Dormann
  • 50,103
  • 11
  • 109
  • 162
1

Konrad's advice is excellent, and you should become happily productive in a classic vi/cc/ld/db/make environment without too much trouble. Many, many university students have learned this toolchain over the course of a 10-15 week class.

That said, the other classic environment is to go the Emacs route. I wouldn't call it an IDE, but it does integrate two important development tools into the editor: the compiler's output, and the debugger. You can have it zip you to the line in the file corresponding to a compiler error, and you can set breakpoints and use the stepper from the editor.

1

vim editor + g++ compiler(GNU C++) + gdb - might help you

1

IntelliJ IDEA + the C/C++ plugin at http://plugins.intellij.net/plugin/?id=1373

Prepare to have your mind-blown.

Cheers!

yesudeep
  • 325
  • 4
  • 13
0

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

I didn't use eclipse at first because I wasn't sure that it was equally good at giving me the means of developing in C++ (efficiently). Besides that, I was also convinced that there had to be better, more specialized tools available for c++ development in Linux:

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?

I honestly believe that, although some tools (like eclipse) are great at many things, it is best to look for other options as well (and I don't mean that for IDE's only, but in general and even in real life)...
Like in this case, vim is really great, and I would have missed out on it if I sticked to something I already knew.

Community
  • 1
  • 1
sven
  • 17,326
  • 10
  • 48
  • 62
0

Code::Blocks is Great.

Wazery
  • 13,971
  • 15
  • 55
  • 91
0

Also you can try to setup emacs as an IDE.

Details are discussed here.

Community
  • 1
  • 1
Shumin Guo
  • 184
  • 1
  • 3
  • 11
0

acme, sam from plan9,

you can use it through Plan 9 from User Space.

plan9assembler
  • 2,852
  • 1
  • 22
  • 13
0

In my eyes best IDE for Linux is SlickEdit. It cost some money but it is fast, great support for tagging and great diff tool, works well with huge project.