Trying to Find a Usable C++ IDE for Linux

Dear LazyWeb,

I'm looking for a usable C++ IDE for Linux and I'm wondering if you've seen one. Before you start giving the normal suggestions (Ecliipse, NetBeans, just-use-vi) let start off by saying that I've tried Eclipse, Netbeans and Code::Blocks and KDevelop several times, and that I normally hack in some combination of vi and emacs. (yes yes, I know I'm supposed to religiously pick one and be rude to the other... consider me a postmodern hacker)

For it to be usable by me, it must be able to:

  1. Handle the fact that my build is run with autoconf/automake.
  2. Properly rename a method and have that show up throughout the codebase.
  3. Properly encapsulate a variable with getter/setting methods.
  4. Correctly answer the question "where is this method being used"
  5. Run without consuming all of my RAM and CPU resources.
  6. Quickly and easily open a new project/branch (I have 93 different branches of Drizzle in my source dir right now. Going through a 10 step process to open any given branch in the IDE== FAIL)

Bonus points given for:

  1. Allowing me to deal with one or more bzr branches in a sane manner
  2. Supporting an option like emacs where the tab key NEVER inserts a tab character and instead ALWAYS indents the line its on.
  3. Figuring out by the existence of a configure.ac file that perhaps a Makefile will appear if it runs "autoreconf -f -i; ./configure"

If you think you have the answer, try this as a test:

  • bzr branch lp:drizzle
  • Open the drizzle directory as a "project"
  • Build
  • Find some method on the Session object in drizzled/session.h.  Rename it using the IDE. Build again.
  • Find the method errmsg_printf in drizzled/errmsg_print.h. Find out every place that uses it. See if that matches what grep -r '\berrmsg_printf\b' would tell you.

Anybody? If you have an IDE and it can actually deal with my daily Drizzle development, I will happily blog both that it can and how to get started.

11 Comments

  1. [1]   Taniel Avedis
    November 04, 2009 at 12:37 PM

    Try RHIDE (a IDE on top of SETEdit)... :-)
  2. [2]   Christian
    November 04, 2009 at 01:52 PM

    Try Anjuta :)
  3. [3]   mysql
    November 04, 2009 at 03:14 PM

    Move to Windows and use Visual Studio, nobody in the world so far able to beat that IDE, ever!
  4. [4]   Stewart Smith
    November 04, 2009 at 04:20 PM

    You editor slut :)
  5. [5]   uberVU - social comments
    November 04, 2009 at 10:24 PM

    This post was mentioned on Twitter by drizzlenews: PlanetDrizzle Monty Taylor: Trying to Find a Usable C++ IDE for Linux: Dear LazyWeb,I'm looking fo.. http://bit.ly/1FOnIo
  6. [6]   Jobin Augustine
    November 05, 2009 at 12:36 AM

    Very good Monty, Now it is clear what all i need to look for when choosing a IDE. i am also starting the search. I am sure few of the above requirements need to sacrificed. or we need to have a heterogeneous env like switching to shell and firing a distclean. But in atleaset some areas IDEs will help. I think MySQL got some affinity towards Eclipse. many tutorials around. -Jobin
  7. [7]   Kay Röpke
    November 05, 2009 at 05:21 AM

    So, you are actively trying to be lured to the light side of the force, now. I'm flabbergasted :D Since I (as you know) use Eclipse CDT exlusively now, let me point out a few things I've noticed about various IDEs in general: 1. autoconf/automake support is sketchy in everything I've seen so far. For CDT there is an autotools plugin from a third party, but eventually, I've ditched that in favor of running autogen/configure once in the terminal. That can easily be automated with a script, though. 2. I'm not sure what you mean by "properly rename". So far, I have yet to encounter a case where it didn't work. Or do you mean changing function/method signatures? 3. Since I'm doing mostly C development, I can't really comment on the getter/setter methods, but I noticed that at least CDT will put them into the header file, which may or may not be what you want. AFAIK you can't influence their position yet, but hey, it's open source :P I've seen it go horribly wrong, though, messing up comments and such. 4. "Correctly" as in what? It's important to note that decent IDEs will take into account preprocessor definitions and turn off code according to their settings. So, if your configure settings turn off huge portions of the code (or entire plugins) neither the search nor refactorings will touch that code. I can see how that's annoying on the one hand, but on the other hand it's mostly what I want. 5. Get a bigger machine ;) But seriously, I've found that while I'm writing and reading code, I do not need my machine to do other things at the same time. After all, I'm supposed to think more about code than watching my computer do work. Whenever I do need to wait it's a great opportunity to walk around a bit to say healthy ;) That being said, it's unavoidable that IDEs will use larger amounts of memory, than a text editor and grep. I mean, we want it to do bookkeeping automatically, no? 6. At least with Eclipse that part is easy, if those branches are already configured. I have tons of MySQL Proxy and Agent branches around and I have them next to each other, all in separate projects. When I need to switch, I close one project and open the other. Done. Extra credit is for having the code for external libraries around, too, so I can easily drop down and e.g. see what the glib function is actually doing (or just hover and see the code). Your bonus points: 1. Works in CDT at least. 2. I've never work that way, but surely you can redefine your keymapping to make TAB map to Indent Line. No brainer. 3. As I said, there's a autotools plugin that's supposed to do that, but I rarely use it anymore, because our build relies on some environment variables and those were a pain to set up all the time for me. I punted and configure it once outside. Easy enough and I don't do it that often. YMMV. Specifically your "find errmsg_printf" is a trick question, for precisely the reason that I haven't built all the plugins. So a "show references" search won't show them (but a search all files will). Now, if you always enable all plugins in the build, that's different of course. It depends what you want from an IDE, I guess. I want to be able to quickly navigate around, without having to hold xref information in my head (like go to declaration, show occurrences of local variables, quickly rename locals, show warning/error annotations in the editor etc). If you are looking for the Emacs of C development, you'll like be disappointed. Wow, that was long :)
  8. [8]   Snowstalker
    November 21, 2009 at 07:11 PM

    Tried http://www.codelite.org ? (Caveat: Haven't tried it myself)
  9. [9]   znndidtg
    November 25, 2009 at 07:35 AM

    znndidtg
  10. [10]   http://www.google.com/search?q=owukesyd
    November 25, 2009 at 07:35 AM

  11. [11]   http://zukonline.shikshik.org/2011/09/11/ides-taylor/
    September 11, 2011 at 01:59 AM

Comment on this post