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

<p>I could find these SO topics:</p>

<ul>
<li><a href="https://stackoverflow.com/questions/2756/lightweight-ide-for-linux">Lightweight IDE for linux</a> and</li>
<li><a href="https://stackoverflow.com/questions/17228/what-tools-do-you-use-to-develop-c-applications-on-linux">What tools do you use to develop
C++ applications on Linux?</a></li>
</ul>

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

<p>My question, then:</p>

<blockquote>
  <p><em>What good, C++ programming IDE is available for Linux?</em></p>
</blockquote>

<p>The minimums are fairly standard: syntax highlighting, code completion (like <a href="http://en.wikipedia.org/wiki/IntelliSense" rel="nofollow noreferrer">intellisense</a> or its Eclipse counterpart) and integrated debugging (e.g., basic
breakpoints).</p>

<p>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 <a href="http://www.eclipse.org/cdt/" rel="nofollow noreferrer">Eclipse supports C++</a>, and I really like that IDE for Java, but is it any good for C++ and is there something better?</p>

<p>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?</p>

<p>Maybe my question should therefore be:</p>

<blockquote>
  <p><em>What IDE do you propose (given your experiences), and why?</em></p>
</blockquote>

[{'answer_id': 24110, 'author': 'Steve M', 'author_id': 1693, 'author_profile': 'https://Stackoverflow.com/users/1693', 'pm_score': 4, 'selected': False, 'text': "<p>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++.</p>\n\n<p>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.</p>\n"}, {'answer_id': 24119, 'author': 'Konrad Rudolph', 'author_id': 1968, 'author_profile': 'https://Stackoverflow.com/users/1968', 'pm_score': 9, 'selected': True, 'text': '<h2>Initially: confusion</h2>\n\n<p>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.</p>\n\n<h2>Epiphany: UNIX is an IDE. <em>All of it.</em><sup>1</sup></h2>\n\n<p>And then I realised that the IDE in Linux is the command line with its tools:</p>\n\n<ul>\n<li>First you set up your shell\n\n<ul>\n<li>Bash, in my case, but many people prefer</li>\n<li><a href="https://fishshell.com/" rel="noreferrer">fish</a> or</li>\n<li><a href="https://github.com/robbyrussell/oh-my-zsh" rel="noreferrer">(Oh My) Zsh</a>;</li>\n</ul></li>\n<li>and your editor; pick your poison — both are state of the art:\n\n<ul>\n<li><a href="https://neovim.io/" rel="noreferrer">Neovim</a><sup>2</sup> or</li>\n<li><a href="https://www.gnu.org/software/emacs/" rel="noreferrer">Emacs</a>.</li>\n</ul></li>\n</ul>\n\n<p>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 <a href="https://valloric.github.io/YouCompleteMe/" rel="noreferrer">YouCompleteMe</a> plugin for smart autocompletion.</p>\n\n<p>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 <a href="https://www.gnu.org/software/make/" rel="noreferrer">Make</a>, <a href="https://bitbucket.org/snakemake/snakemake/wiki/Home" rel="noreferrer">CMake</a>, <a href="https://bitbucket.org/snakemake/snakemake/wiki/Home" rel="noreferrer">SnakeMake</a> or any of the various alternatives. And you manage your code with a version control system (most people use <a href="https://git-scm.com/" rel="noreferrer">Git</a>). You also use <a href="https://tmux.github.io/" rel="noreferrer">tmux</a> (previously also screen) to multiplex (= think multiple windows/tabs/panels) and persist your terminal session.</p>\n\n<p>The point is that, thanks to the shell and a few tool writing conventions, these all <em>integrate with each other</em>. And that way <strong>the Linux shell is a truly integrated development environment</strong>, 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.)</p>\n\n<h2>To each their own</h2>\n\n<p>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\xa0—\xa0like me\xa0—\xa0you end up not using them. Here’s just a small and biased selection:</p>\n\n<ul>\n<li>For Python development, there’s <a href="https://www.jetbrains.com/pycharm/" rel="noreferrer">PyCharm</a></li>\n<li>For R, there’s <a href="https://www.rstudio.com/" rel="noreferrer">RStudio</a></li>\n<li>For JavaScript and TypeScript, there’s <a href="https://code.visualstudio.com/" rel="noreferrer">Visual Studio Code</a> (which is also a good all-round editor)</li>\n<li>And finally, many people love the <a href="https://www.sublimetext.com/" rel="noreferrer">Sublime Text editor</a> for general code editing.</li>\n</ul>\n\n<p>Keep in mind that this list is far from complete.</p>\n\n<hr>\n\n<p><sup>1</sup> I stole that title from dsm’s comment.</p>\n\n<p><sup>2</sup> 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.</p>\n'}, {'answer_id': 24122, 'author': 'Imran', 'author_id': 1897, 'author_profile': 'https://Stackoverflow.com/users/1897', 'pm_score': 6, 'selected': False, 'text': '<ol>\n<li><a href="http://www.codeblocks.org/" rel="noreferrer">Code::Blocks</a> </li>\n<li><a href="http://www.eclipse.org/cdt/" rel="noreferrer">Eclipse CDT</a></li>\n</ol>\n\n<p>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.</p>\n'}, {'answer_id': 24156, 'author': 'Konrad Rudolph', 'author_id': 1968, 'author_profile': 'https://Stackoverflow.com/users/1968', 'pm_score': 5, 'selected': False, 'text': '<blockquote>\n  <p>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.</p>\n</blockquote>\n\n<p>My first source were actually the tools\' <code>man</code> pages. Just type</p>\n\n<pre><code>$ man toolname\n</code></pre>\n\n<p>on the command line (<code>$</code> here is part of the prompt, not the input).</p>\n\n<p>Depending on the platform, they\'re quite well-written and can also be found on the internet. In the case of <code>make</code>, I actually read the complete <a href="http://www.gnu.org/software/make/manual/make.html" rel="nofollow noreferrer">documentation</a> 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 <code>make</code>.</p>\n\n<p>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\' <code>.gvimrc</code> config file. Many people put it on the web. Here\'s <a href="http://page.mi.fu-berlin.de/krudolph/stuff/gvimrc.html" rel="nofollow noreferrer">mine</a>.</p>\n\n<p>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 <em>should</em>, however, know all the important parameters for <code>g++</code> and <code>ld</code> (the GCC linker tool that\'s invoked automatically except when explicitly prevented).</p>\n\n<blockquote>\n  <p>Also I\'m curious, do you have code completion and syntax highlighting when you code?</p>\n</blockquote>\n\n<p>Syntax highlighting: yes, and a much better one than Visual Studio. Code completion: yes-<em>ish</em>. 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 <em>has</em> native code completion support for C++. Combined with the <a href="http://ctags.sourceforge.net/" rel="nofollow noreferrer">ctags</a> library and a plug-in like <a href="http://vim-taglist.sourceforge.net/" rel="nofollow noreferrer">taglist</a> this is almost an IDE.</p>\n\n<p>Actually, what got me started was an <a href="http://lucumr.pocoo.org/articles/vim-as-development-environment" rel="nofollow noreferrer">article</a> by Armin Ronacher. Before reading the text, look at the screenshots at the end of it!</p>\n\n<blockquote>\n  <p>do you have to compile first before getting (syntax) errors?</p>\n</blockquote>\n\n<p>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.</p>\n\n<blockquote>\n  <p>and how do you debug (again think breakpoints etc)?</p>\n</blockquote>\n\n<p>I use <code>gdb</code> which is a command-line tool. There\'s also a graphical frontend called <code>DDD</code>. <code>gdb</code> 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.</p>\n\n<blockquote>\n  <p>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</p>\n</blockquote>\n\n<p>You shouldn\'t even try to compare a modern, full-feature editor like Emacs or GVIM to Notepad. Notepad is an embellished <code>TextBox</code> 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 <code>cmd.exe</code> is severely crippled. PowerShell is much better.</p>\n\n<p>/EDIT: I should mention explicitly that <strong>GVIM has tabbed editing</strong> (as in tabbed browsing, not tabs-vs-spaces)! It took me ages to find them although they\'re not hidden at all. Just type <code>:tabe</code> instead of plain <code>:e</code> 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 <code>gt</code> (type <kbd>g</kbd>, then <kbd>t</kbd> in command mode) should work everywhere, and jumps to the next tab, or tab no. <em>n</em> if a number was given. Type <code>:help gt</code> to get more help.</p>\n'}, {'answer_id': 24159, 'author': 'Greg Hewgill', 'author_id': 893, 'author_profile': 'https://Stackoverflow.com/users/893', 'pm_score': 3, 'selected': False, 'text': '<p>Although I use Vim, some of my co-workers use <a href="http://www.slickedit.com/" rel="nofollow noreferrer">SlickEdit</a> 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.</p>\n\n<p>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.</p>\n'}, {'answer_id': 24160, 'author': 'Kristopher Johnson', 'author_id': 1175, 'author_profile': 'https://Stackoverflow.com/users/1175', 'pm_score': 5, 'selected': False, 'text': '<p>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.</p>\n\n<p>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.</p>\n\n<p>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.</p>\n'}, {'answer_id': 24174, 'author': 'wvdschel', 'author_id': 2018, 'author_profile': 'https://Stackoverflow.com/users/2018', 'pm_score': 3, 'selected': False, 'text': "<p>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.</p>\n"}, {'answer_id': 24240, 'author': 'dguaraglia', 'author_id': 2384, 'author_profile': 'https://Stackoverflow.com/users/2384', 'pm_score': 3, 'selected': False, 'text': '<p>I quite like <a href="http://www.ultimatepp.org/" rel="noreferrer">Ultimate++</a>\'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.</p>\n'}, {'answer_id': 24264, 'author': 'jassuncao', 'author_id': 1009, 'author_profile': 'https://Stackoverflow.com/users/1009', 'pm_score': 3, 'selected': False, 'text': "<p>If you like Eclipse for Java, I suggest Eclipse CDT. \nDespite 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.\nI 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.</p>\n"}, {'answer_id': 50234, 'author': 'rck', 'author_id': 5070, 'author_profile': 'https://Stackoverflow.com/users/5070', 'pm_score': 5, 'selected': False, 'text': '<p>Not to repeat an answer, but I think I can add a bit more.</p>\n\n<p><a href="http://www.slickedit.com" rel="noreferrer">Slickedit</a> is an excellent IDE.</p>\n\n<p>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.<br>\nThe code completion works well and there are a large amount of options for things like automatic formatting, beautification and refactoring.<br>\nIt does have integrated debugging.<br>\nIt has plug-in support and fairly active community creating them.<br>\nIn 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.<br>\nIn addition to Linux, there are Mac and Windows versions of it, should you need them.<br></p>\n'}, {'answer_id': 53922, 'author': 'ràmäyác', 'author_id': 4358, 'author_profile': 'https://Stackoverflow.com/users/4358', 'pm_score': 6, 'selected': False, 'text': '<p><em>A quick answer, just to add a little more knowledge to this topic:</em><br>\nYou must definitely check out <a href="http://www.netbeans.org/features/cpp/" rel="noreferrer">NetBeans</a>. Netbeans 6.7 has the following features:  </p>\n\n<ul>\n<li>C/C++ Projects and Templates: Supports syntax highlighting,\nautomatic code completion, automatic indentation.</li>\n<li>It has a C/C++ Debugger</li>\n<li>Supports Compiler Configurations, Configuration Manager and Makefile Support (with a\nWizard).</li>\n<li>It has a Classes Window, a Usages Window and a File Navigation Window (or panel).</li>\n<li>A <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67#section-NewAndNoteworthyMilestone2NB67-MacroExpansionView" rel="noreferrer">Macro expansion view</a>, and also <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67#section-NewAndNoteworthyMilestone2NB67-MacroExpansionTooltip" rel="noreferrer">tooltips</a>.</li>\n<li>Support for <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67#section-NewAndNoteworthyMilestone2NB67-QtSupport" rel="noreferrer">QT development</a>.</li>\n</ul>\n\n<p>I think it\'s a perfect (and far better) Visual Studio substitution, and a very good tool to learn C/C++.</p>\n\n<p>Good Luck!</p>\n'}, {'answer_id': 53983, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 1, 'selected': False, 'text': "<p>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.</p>\n\n<p>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.</p>\n"}, {'answer_id': 63769, 'author': 'Jeroen Dirks', 'author_id': 7743, 'author_profile': 'https://Stackoverflow.com/users/7743', 'pm_score': 2, 'selected': False, 'text': '<p>I like <a href="http://www.scintilla.org/SciTE.html" rel="nofollow noreferrer">SciTE</a> 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.</p>\n\n<p>I use it together with Git for source code control and the very useful \'git grep\' command for searching in your code base.</p>\n\n<p>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.</p>\n'}, {'answer_id': 86958, 'author': 'anjanb', 'author_id': 11142, 'author_profile': 'https://Stackoverflow.com/users/11142', 'pm_score': 3, 'selected': False, 'text': '<p>Sun Studio version 12 is a free download(FREE and paid support available) -- <a href="http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0" rel="noreferrer">http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0</a>.</p>\n\n<p>I\'m sure you have code completion and debugging support including plugin support in this IDE.</p>\n\n<p>Sun Studio is available for Linux as well as Solaris. \nforums : <a href="http://developers.sun.com/sunstudio/community/forums/index.jsp" rel="noreferrer">http://developers.sun.com/sunstudio/community/forums/index.jsp</a>. \nSun Studio Linux forums : <a href="http://forum.sun.com/forum.jspa?forumID=855" rel="noreferrer">http://forum.sun.com/forum.jspa?forumID=855</a></p>\n\n<p>I\'ll be eager to hear your feedback on this tool.</p>\n\n<p>BR,<br>\n~A</p>\n'}, {'answer_id': 156760, 'author': 'sven', 'author_id': 46, 'author_profile': 'https://Stackoverflow.com/users/46', 'pm_score': 4, 'selected': False, 'text': '<p>Just a quick follow up for this question...</p>\n\n<p>It\'s been a month since I started using Vim as my main \'GUI\'\ntool for programming C++ in Linux. At first the learning\ncurve was indeed a bit steep but after a while and with the\nright options turned on and <a href="http://ctags.sourceforge.net/" rel="nofollow noreferrer">scripts running</a> I really\ngot the hang of it!</p>\n\n<p>I love the way how you can shape Vim to suite your needs;\njust add/change <a href="http://www.vim.org/htmldoc/map.html" rel="nofollow noreferrer">key mappings</a> and Vim is turned into a\nhighly productive \'IDE\'.</p>\n\n<p>The toolchain to build and compile a C++ program on Linux is\nalso really intuitive. make and g++ are <em>the</em> tools you\'ll\nuse.</p>\n\n<p>The <a href="http://www.gnu.org/software/ddd/" rel="nofollow noreferrer">debugger ddd</a> is however not really that good, but\nmaybe that\'s because I haven\'t had the time to master it\nproperly.</p>\n\n<p>So to anyone who is, or was looking for a good C++ IDE in\nLinux, just like I was, your best bet lays with the standard\navailable tools in Linux itself (Vim, g++, ddd) and you\nshould really at least try to use them, before looking for\nsonething else...</p>\n\n<p>Last but not least, I really want to thank <a href="https://stackoverflow.com/users/1968/konrad-rudolph">konrad</a> for\nhis answer here, It really helped me find my way in the\nLinux development environment, thank you!</p>\n\n<p>I\'m also <em>not</em> closing this question, so people can still\nreact or maybe even add new suggestions or additions to the\nalready really nice answers...</p>\n'}, {'answer_id': 219039, 'author': 'kbluck', 'author_id': 13402, 'author_profile': 'https://Stackoverflow.com/users/13402', 'pm_score': 1, 'selected': False, 'text': '<p>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.</p>\n'}, {'answer_id': 219232, 'author': 'sven', 'author_id': 46, 'author_profile': 'https://Stackoverflow.com/users/46', 'pm_score': 0, 'selected': False, 'text': '<blockquote>\n  <p><a href="https://stackoverflow.com/questions/24109/c-ide-for-linux#219039">why wouldn\'t you also use it for C++?\n  CDT meets every requirement you\'ve\n  mentioned.</a></p>\n</blockquote>\n\n<p>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: </p>\n\n<blockquote>\n  <p>and I really like that [eclipse] IDE for java,\n  but is it any good for c++ and won\'t I\n  miss out on something that is even\n  better?</p>\n</blockquote>\n\n<p>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 <em>real life</em>)...<br>\nLike in this case, vim is really great, and I would have missed out on it if I sticked to something I already knew. </p>\n'}, {'answer_id': 222746, 'author': 'DavidG', 'author_id': 25893, 'author_profile': 'https://Stackoverflow.com/users/25893', 'pm_score': 3, 'selected': False, 'text': '<p>I really suggest <a href="http://www.codeblocks.org" rel="noreferrer">codeblocks</a>. It\'s not as heavy as Eclipse and it\'s got Visual Studio project support.</p>\n'}, {'answer_id': 382453, 'author': 'Drew Dormann', 'author_id': 16287, 'author_profile': 'https://Stackoverflow.com/users/16287', 'pm_score': 1, 'selected': False, 'text': '<p>Having been raised on Visual Studio, I\'ve found the relatively young <a href="http://www.codeblocks.org/" rel="nofollow noreferrer">Code::Blocks</a> to be very familiar.</p>\n'}, {'answer_id': 384861, 'author': 'Hernán', 'author_id': 48026, 'author_profile': 'https://Stackoverflow.com/users/48026', 'pm_score': 3, 'selected': False, 'text': "<p>I've previously used Ultimate++ IDE and it's rather good. </p>\n"}, {'answer_id': 408842, 'author': 'Henrik Hartz', 'author_id': 50830, 'author_profile': 'https://Stackoverflow.com/users/50830', 'pm_score': 6, 'selected': False, 'text': '<p>At least for Qt specific projects, the <a href="http://www.qt.io/ide/" rel="noreferrer">Qt Creator</a> (from Nokia/Trolltech/Digia) shows great promise.</p>\n'}, {'answer_id': 517736, 'author': 'NVRAM', 'author_id': 57582, 'author_profile': 'https://Stackoverflow.com/users/57582', 'pm_score': 3, 'selected': False, 'text': '<blockquote>\n  <p>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.</p>\n</blockquote>\n\n<p>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.</p>\n\n<blockquote>\n  <p>As an old-time UNIX guy, I always use Emacs. But that has a pretty steep \n  and long learning curve, so I\'m not sure I can recommend it to newcomers.</p>\n</blockquote>\n\n<p>I\'d second that; use Emacs as my primary editor on both Linux and on MSW (XP2,W2K).\nI would disagree that it has a <em>steep</em> learning curve, but would say that because of the huge number of features it has a <em>long</em> 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.</p>\n\n<p>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.</p>\n\n<p>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 <em>sometimes</em> delays many seconds before refreshing files from disk.   The main reason for editing in the VS window is the "Intellisense" code completion feature.</p>\n'}, {'answer_id': 676490, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 3, 'selected': False, 'text': '<p><a href="http://www.geany.org/" rel="nofollow noreferrer">geany</a> I recommend</p>\n'}, {'answer_id': 839107, 'author': 'dsm', 'author_id': 7780, 'author_profile': 'https://Stackoverflow.com/users/7780', 'pm_score': 4, 'selected': False, 'text': '<p>I recommend you read <a href="http://www.faqs.org/docs/artu/" rel="noreferrer">The Art Of UNIX Progranmming</a>. It will frame your mind into using the environment as your IDE.</p>\n'}, {'answer_id': 1531671, 'author': 'Michael Brown', 'author_id': 27986, 'author_profile': 'https://Stackoverflow.com/users/27986', 'pm_score': 2, 'selected': False, 'text': '<p>Use <a href="http://www.mono-project.com/Main_Page" rel="nofollow noreferrer">Mono-Develop</a>. It is very similar to Visual Studio. It works cross-platform and is Awesome!! </p>\n'}, {'answer_id': 1698822, 'author': 'Radim Cernej', 'author_id': 104816, 'author_profile': 'https://Stackoverflow.com/users/104816', 'pm_score': 2, 'selected': False, 'text': "<p>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.  </p>\n\n<p>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.</p>\n"}, {'answer_id': 1775460, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 6, 'selected': False, 'text': '<p>My personal favorite is the <strong>CodeLite 2.x</strong> IDE.</p>\n\n<p>see: <a href="http://www.codelite.org/" rel="noreferrer" title="codelite website">http://www.codelite.org</a></p>\n\n<p>The decision to use CodeLite was based on a research regarding the following C++ IDE for Linux:</p>\n\n<ul>\n<li>Eclipse Galileo with CDT Plugin</li>\n<li>NetBeans 6.7 (which is also the base for the SunStudio IDE)</li>\n<li>KDevelop4</li>\n<li>CodeBlocks 8.02</li>\n<li>CodeLite 2.x</li>\n</ul>\n\n<p>After all I have decided to use <em>CodeLite 2.x</em>.</p>\n\n<p>Below I have listed some Pros and Cons regarding the mentioned C++ IDEs. Please note, that this reflects my personal opinion only!</p>\n\n<p><strong>EDIT</strong>: what a pity that SOF doesn\'t support tables, so I have to write in paragraphs ...</p>\n\n<p><strong>Eclipse Galileo with CDT Plugin</strong></p>\n\n<p>Pros:</p>\n\n<ul>\n<li>reasonable fast</li>\n<li>also supports Java, Perl(with E.P.I.C plugin)</li>\n<li>commonly used and well maintained</li>\n<li>also available for other OS flavours (Windows, MacOS, Solaris, AIX(?))</li>\n</ul>\n\n<p>Cons:</p>\n\n<ul>\n<li>GUI is very confusing and somewhat inconsistent - not very intuitive at all</li>\n<li>heavy weight</li>\n<li>Only supports CVS (AFAIK)</li>\n</ul>\n\n<p><strong>NetBeans 6.7</strong> (note this is also the base for the SunStudio IDE)</p>\n\n<p>Pros:</p>\n\n<ul>\n<li>one of the most intuitive GUI I have ever seen</li>\n<li>also supports Java, Python, Ruby</li>\n<li>integrates CVS, SVN, Mercurial</li>\n<li>commonly used and well maintained</li>\n<li>also available for other OS flavours (Windows, MacOS, Solaris)</li>\n</ul>\n\n<p>Cons:</p>\n\n<ul>\n<li>extremly slow</li>\n<li>heavy weight</li>\n<li>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</li>\n</ul>\n\n<p><strong>KDevelop4</strong> (note: I did not much testing on it)</p>\n\n<p>Pros:</p>\n\n<ul>\n<li>commonly used on Linux</li>\n<li>integrates CVS, SVN, Mercurial</li>\n</ul>\n\n<p>Cons:</p>\n\n<ul>\n<li>the GUI looks somewhat old fashioned</li>\n<li>heavy weight</li>\n<li>very specific to the KDE environment</li>\n</ul>\n\n<p><strong>CodeBlocks 8.02</strong> (note: I did not much testing on it)</p>\n\n<p>Pros:</p>\n\n<ul>\n<li>reasonable fast</li>\n</ul>\n\n<p>Cons:</p>\n\n<ul>\n<li>the GUI looks somewhat old fashioned (although it has a nice startup screen)</li>\n<li>the fonts in the editor are very small</li>\n<li>some icons (e.g. the debugger related icons starting/stepping) are very small</li>\n<li>no source control integration</li>\n</ul>\n\n<p><strong>CodeLite 2.x</strong> (note: this is my personal favorite)</p>\n\n<p>Pros:</p>\n\n<ul>\n<li>the best, modern looking and intuitive GUI I have seen on Linux</li>\n<li>lightweight</li>\n<li>reasonable fast</li>\n<li>integrates SVN</li>\n<li>also available on other OS flavours(Windows, MacOS, Solaris(?))</li>\n</ul>\n\n<p>Cons:</p>\n\n<ul>\n<li>no CVS integration (that\'s important for me because I have to use it at work)</li>\n<li>no support for Java, Perl, Python (would be nice to have)</li>\n</ul>\n'}, {'answer_id': 1890376, 'author': 'Matt Fichman', 'author_id': 172788, 'author_profile': 'https://Stackoverflow.com/users/172788', 'pm_score': 3, 'selected': False, 'text': '<p>make + vim + gdb = one great IDE</p>\n'}, {'answer_id': 2047976, 'author': 'teZeriusz', 'author_id': 166926, 'author_profile': 'https://Stackoverflow.com/users/166926', 'pm_score': 3, 'selected': False, 'text': '<p>Perhaps the <a href="http://www.eclipse.org/linuxtools/Blockquote" rel="noreferrer">Linux Tools Project</a> for Eclipse could fill your needs?</p>\n\n<blockquote>\n  <p>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.</p>\n</blockquote>\n'}, {'answer_id': 2168307, 'author': 'Etienne Savard', 'author_id': 134973, 'author_profile': 'https://Stackoverflow.com/users/134973', 'pm_score': 3, 'selected': False, 'text': "<p>I use Eclipse CDT and Qt Creator (for Qt applications).</p>\n\n<p>That's my preferences. It's a very suggestive question and there is as many answers as there is developers. :)</p>\n"}, {'answer_id': 2282816, 'author': 'IonLupascu', 'author_id': 275441, 'author_profile': 'https://Stackoverflow.com/users/275441', 'pm_score': 2, 'selected': False, 'text': '<p>For me <a href="http://www.ultimatepp.org/" rel="nofollow noreferrer">Ultimate++</a> seems to be the best solution to write cross-os program</p>\n'}, {'answer_id': 2540028, 'author': 'Charles Zhang', 'author_id': 304449, 'author_profile': 'https://Stackoverflow.com/users/304449', 'pm_score': 4, 'selected': False, 'text': '<p>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.</p>\n\n<p>With insight, you have a nice GUI and the raw power of GDB.</p>\n\n<p>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 <strong>Python</strong> as your script language if you are using GDB 7 or newer version. </p>\n\n<p>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.</p>\n\n<ol>\n<li>Very slow to display even a array with only a few hundreds of elements</li>\n<li>No highlighting for changed value ( By default, visual studio shows changed values in the watch windows in red)</li>\n<li>Very limited ability to show memory. </li>\n<li>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.</li>\n<li>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.</li>\n<li>No built-in support for STL such as vector, list, deque and map etc.</li>\n<li>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". </li>\n</ol>\n\n<p>The list can be a lot longer.</p>\n\n<p>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.</p>\n\n<p>For instance, you have a array like:</p>\n\n<pre><code>struct IdAndValue\n{\n  int ID;\n  int value;\n};\n\n\nIdAndValue IdAndValues[1000];\n</code></pre>\n\n<p>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:</p>\n\n<pre><code>define PrintVal \nset $i=0\nprintf "ID = %d\\n", $arg0\nwhile $i&lt;1000\n  if IdAndValues[$i].ID == $arg0\n    printf "ordinal = %d, value = %d\\n", $i, IdAndValues[$i].vaue\n    set $i++\n  end\nend\nend\n</code></pre>\n\n<p>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).</p>\n\n<p>Use <strong>PrintVal 1</strong> from GDB prompt to print out values for ID "1"</p>\n\n<p>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</p>\n'}, {'answer_id': 2544596, 'author': 'thegeek', 'author_id': 304129, 'author_profile': 'https://Stackoverflow.com/users/304129', 'pm_score': 2, 'selected': False, 'text': '<p>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.</p>\n\n<ul>\n<li><a href="http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/" rel="nofollow noreferrer">C/C++ IDE</a></li>\n<li><a href="http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-editor-as-sourece-code-browser/" rel="nofollow noreferrer">Source code browser</a></li>\n</ul>\n\n<p>And a lot more in the vi / vim tips &amp; tricks series over there.</p>\n'}, {'answer_id': 3268905, 'author': 'user394324', 'author_id': 394324, 'author_profile': 'https://Stackoverflow.com/users/394324', 'pm_score': 2, 'selected': False, 'text': '<p>I prefer using Emacs and Vim for writing C++ code. When I need to use an IDE, I use CodeBlocks.</p>\n'}, {'answer_id': 3295786, 'author': 'Varuna', 'author_id': 199987, 'author_profile': 'https://Stackoverflow.com/users/199987', 'pm_score': 2, 'selected': False, 'text': '<p>I have been using <a href="http://projects.gnome.org/anjuta/" rel="nofollow noreferrer">Anjuta</a> 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.</p>\n'}, {'answer_id': 3498807, 'author': 'Wazery', 'author_id': 267416, 'author_profile': 'https://Stackoverflow.com/users/267416', 'pm_score': 0, 'selected': False, 'text': '<p>Code::Blocks is Great.</p>\n'}, {'answer_id': 4612342, 'author': 'TheCottonSilk', 'author_id': 545691, 'author_profile': 'https://Stackoverflow.com/users/545691', 'pm_score': 4, 'selected': False, 'text': '<p>I am using "<a href="http://www.geany.org/" rel="noreferrer">Geany</a>" found good so far, its fast and light weight IDE. </p>\n\n<p><a href="http://www.blastfromthepast.se/blabbermouth/2009/10/geany-as-good-as-ides-get/" rel="noreferrer">Among Geany’s features are</a>:  </p>\n\n<ul>\n<li>Code folding  </li>\n<li>Session saving  </li>\n<li>Basic IDE features such as syntax highlighting, tabs, automatic indentation and code completion  </li>\n<li>Simple project management   </li>\n<li>Build system  </li>\n<li>Color picker (surprisingly handy during web development)  </li>\n<li>Embedded terminal emulation  </li>\n<li>Call tips  </li>\n<li>Symbol lists  </li>\n<li>Auto-completion of common constructs (such as if, else, while, etc.)    </li>\n</ul>\n'}, {'answer_id': 5094608, 'author': 'SomeGuy', 'author_id': 630694, 'author_profile': 'https://Stackoverflow.com/users/630694', 'pm_score': 3, 'selected': False, 'text': '<p>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.</p>\n\n<p>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.</p>\n\n<p>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.</p>\n\n<p>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.</p>\n'}, {'answer_id': 5386275, 'author': 'Shumin Guo', 'author_id': 668687, 'author_profile': 'https://Stackoverflow.com/users/668687', 'pm_score': 0, 'selected': False, 'text': '<p>Also you can try to setup emacs as an IDE. </p>\n\n<p>Details are discussed <a href="https://stackoverflow.com/questions/63421/using-emacs-as-an-ide">here</a>. </p>\n'}, {'answer_id': 5722734, 'author': 'plan9assembler', 'author_id': 1710672, 'author_profile': 'https://Stackoverflow.com/users/1710672', 'pm_score': 0, 'selected': False, 'text': '<p>acme, sam from plan9, </p>\n\n<p>you can use it through Plan 9 from User Space. </p>\n'}, {'answer_id': 5754574, 'author': 'Anirudh Gali', 'author_id': 703282, 'author_profile': 'https://Stackoverflow.com/users/703282', 'pm_score': 1, 'selected': False, 'text': '<p>vim editor + g++ compiler(GNU C++) + gdb - might help you</p>\n'}, {'answer_id': 7160058, 'author': 'yesudeep', 'author_id': 90069, 'author_profile': 'https://Stackoverflow.com/users/90069', 'pm_score': 1, 'selected': False, 'text': '<p>IntelliJ IDEA + the C/C++ plugin at <a href="http://plugins.intellij.net/plugin/?id=1373" rel="nofollow">http://plugins.intellij.net/plugin/?id=1373</a></p>\n\n<p>Prepare to have your mind-blown.</p>\n\n<p>Cheers!</p>\n'}, {'answer_id': 7166336, 'author': 'mile davidovicc', 'author_id': 378766, 'author_profile': 'https://Stackoverflow.com/users/378766', 'pm_score': 0, 'selected': False, 'text': '<p>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.</p>\n'}, {'answer_id': 33822979, 'author': 'arved', 'author_id': 792456, 'author_profile': 'https://Stackoverflow.com/users/792456', 'pm_score': 2, 'selected': False, 'text': '<p>For CMake based projects i use Jetbrains CLion</p>\n\n<p>For Autotools based projects the already mentioned Qtcreator.</p>\n\n<p>For everything else: VIM + YouCompleteMe</p>\n'}, {'answer_id': 33939624, 'author': 'Claudio', 'author_id': 2214693, 'author_profile': 'https://Stackoverflow.com/users/2214693', 'pm_score': 3, 'selected': False, 'text': '<p>On Linux there are plenty of IDEs: </p>\n\n<ul>\n<li><a href="http://www.codeblocks.org/" rel="nofollow">Code::blocks</a></li>\n<li><a href="http://codelite.org/" rel="nofollow">Codelite</a></li>\n<li><a href="https://www.kdevelop.org/" rel="nofollow">KDevelop</a></li>\n<li><a href="http://www.qt.io/download-open-source/" rel="nofollow">Qt Creator</a></li>\n<li><a href="https://eclipse.org/cdt/" rel="nofollow">Eclipse with CDT</a></li>\n<li><a href="https://netbeans.org/" rel="nofollow">NetBeans</a></li>\n</ul>\n\n<p>In <em>my</em> experience, the most valuable are <strong>Eclipse</strong> and <strong>Qt Creator</strong>.\nBoth provide all "standard" features (i.e., autocompletion, syntax highlightning, debugger, git integration).\nIt is worth noting that Eclipse also provides refactoring functionalities, while Qt Creator provides integration with Valgrind and support for deployment on remote targets.</p>\n\n<p>Also the commercial <a href="https://www.jetbrains.com/clion/" rel="nofollow">CLion IDE</a> seems preety good (but I\'ve not used it extensively).</p>\n'}]
['https://Stackoverflow.com/questions/24109', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/46/']