I'm just starting to get into c++ development and am experimenting with different IDEs. I was curious about what everyone's favorite IDE is and why that made that decision.

I've tried:

Visual C++ 2012 express


Eclipse CDT

So far, my favorite has to be Eclipse CDT. That may be because I come from a background of Java and the environment is familiar to me. I didn't really like Visual C++ because I'm not a fan of the way it highlights your code. Although it's a ton faster than Eclipse, I still feel more comfortable in Eclipse. Perhaps I just need more time in Visual C++.

So anyways, what is your IDE of choice and what preference changes do you think are the most important for efficient development?

I'm old-fashioned. I like a good editor such as nedit (any X-windows system), gedit (Linux), notepad++ (Windows), and make, plus a good debugger. I've used VS (many versions), and Eclipse (several versions), but they all get in the way of focussing on what you need to do, in my opinion. FWIW, I have been doing C++ programming for over 20 years, originally as principal engineer and architect for the company that wrote the manufacturing systems used by most semiconductor manufacturers in the world to run their FABs, and currently as senior systems engineer for a tier-one global tech company, I still use it extensively.

All that said, I think that Eclipse CDT is a good tool, and if you need the hand-holding that an IDE provides, that is a great choice. I've used it in a number of collaborative development projects and it just works well. It is also cross-platform, so you aren't limited to Windows, which you would be with Visual Studio. If you are ONLY going to program in the Windows ecosystem, then VS may be a better choice.

What I want from an IDE are, mainly:

  • A good set of text-editor functions and have them easily accessible. By text-editor functions, I mean things like find-replace, goto-line, file search, and so on.
  • A good set of basic coding aids like syntax highlighting, code formatting (indenting), maybe collapsable blocks, and so on.
  • Quick and responsive code-completion. I cannot stress enough how important that it should be quick and responsive, otherwise, it's useless.
  • Good interaction with cmake.
  • Integration of version control systems is a bonus (Git, SVN, etc.).
  • Integrated documentation is also a bonus.

In that sense, I'm a bit of a minimalist (not quite as minimalist as rubberman). I generally find it impractical and wasteful to have too much stuff in one massive tool (cough.. Visual Studio.. cough..). When you program, you don't do 50 things at once, so why have 50 different tools in one IDE, it's just clutter. I've used Visual Studio quite a bit, but never more than a tiny fraction of it, and it generally fails for me at the most basic things listed above (even its text-editing functions are awkward compared to the "norm" of basic notepad-like editors, code-completion is too slow and must be turned off, and unsurprisingly it doesn't seem integrate well with anything). On the opposite, CodeBlocks does perform quite well on most points listed above (although its code-completion could be a bit faster). My favorite IDE is definitely KDevelop (works on all OS except Windows), it's great at all of the things I listed and plenty of other nice little things, without too much clutter.

I only used the Java version of Eclipse. I thought it was OK, but it didn't leave a lasting impression. My general feeling about it is that it was a bit too childish, seemed good for school assignments but couldn't really see myself using for real projects.

I also used QtCreator a little bit. It was pretty good too. Definitely nice when doing Qt development, but also good for general things. It does have most of the stuff I listed above. So, it's worth a try.

And when I use a more basic code editor (enhanced text editor), then I typically use Kate (in Linux) or Notepad++ (in Windows). Kate is definitely a really nice enhanced text editor for Linux.

People often cite a good debugger as being important. I don't really share that. Since I started being more consistent with unit-testing and incremental testing, I just never needed to do much debugging beyond the occasional insertion of print-outs in the code to "smoke out a typo". So, I can't say that I care too much if there's a debugger or not. And for memory issues or profiling, I use separate tools.

Out of all of the IDEs I've tried, I prefer Code::Blocks the most because it's the most minimalist of the modern IDEs while still giving me the features I need in order to develop larger projects (being able to quickly find the delcaration of a variable or definition of a function very useful).

MSVC feels far too bloated and slow for my needs. The GUI takes up too much space that could be used for actual coding. I will avoid any editor which tries to red-squiggly-underline my code before I'm finished writing it. Furthermore, I find the project options menus in MSVC insanely hard to navigate.

Generally, it's a good idea not to absolutely depend on an IDE, mostly because there's no guarantee you'll have access to it if you ever move to a different operating system. That's why I think at least a little bit of knowledge in CMake is nice.

I prefer CodeLite. Stable, Class generator, generate implementation of declared functions, GCC/VC Compilers support, GTK, QT, wxWidgets projects support, RAD for wxWidgets, Import VS Solution, Git/SVN integration et al.

But try the posted IDEs and choose your flavor!