I recommend Visual Studio Code, I use it on Debian. The nice part about it is that you can install more language packages on the go if you need and use it for more than just C++.
Also try KDevelop. It is a very mature application and can be used for over 60 different languages / scripts - provided one has a compiler / interpreter for that language / script.
Other technologies such as Qt, sfml et al. can be integrated.
Well there are pro's and cons for everything. IMO the cons for C::B are that it doesn't seem to have version control (a definite deal breaker IMO); and doesn't do background compilation.
OTOH I like it's code completion features when creating a new class. On that point, it's convenient to use some diagramming software like dia, where one can draw UML diagrams, and have it create the classes and function stubs for you - this is independent of which IDE one uses or not.
It's a preference thing on my part. Simply a comparison based on experience with what I assess as the better one's I mention. It is popular but isn't updated often and with some of the libraries <stdio> is one from memory where there are well documented failings that have never been rectified for years. There are better pickings elsewhere. Xcode does what I want at the moment and if I (limited) work on GUI based stuff I use Qt Creator.
And why not just use vim?
Vim is an editor as i understand it. I have never used it so I can't comment.
One that was mentioned today in another post is Codelite. Might be of interest but I haven't used it. If you try it let us know :)
OTOH I like it's code completion features when creating a new class. On that point, it's convenient to use some diagramming software like dia, where one can draw UML diagrams, and have it create the classes and function stubs for you - this is independent of which IDE one uses or not.
Visual studio has built-in UML diagrams for classes.
What's wrong with Code::Blocks?
This review from source forge should explain it all:
The only advantage compared to Eclipse is that CodeBlocks is much faster to load and code. However, if you want to develop big projects such as Python or Moses, forget about it. Go Visual Studio or Eclipse. Design flaws: 1. cannot display data structure in a tree view, i.e., code outline; 2. cannot change hotkeys, it uses ancient Turbo/Borland C++ hot key assignment, e.g., Ctrl+F9 to compile, you need to install addition plugin to change hotkey, this shows it is immature; 3. cannot use Ctrl+Left click to go to declaration and definition; 4. cannot navigate forward and backward using Alt+Left and Alt+Right; 5. does not support nested macro expansion; 6. closed projects is not shown in the workspace, kind of s-t-u-p-i-d. Then what is the use of the workspace; 7. during debugging, mouse hover over can display variable values only for basic types such as float/int/double, but not for STL containers (e.g., vector<string>); watch window sometimes need to be opened manually every time, kind of buggy; 8. smart indent function is not so smart: close bracket indent is not adjusted automatically; upon a newline, in some cases, indent is not auto adjusted; 9. No undo/redo history, cannot go to Nth undo/redo step in the history; 10. program's output is shown in a popup console window but is not captured in the dialog window; during debugging, when the program exits , the console window closes immediately so you cannot see when the program's output; In conclusion, it is only usable for C/C++ beginners, you can use it only for tiny projects containing one or a few source code files, such as using the old Borland/Turbo C++ for programming competitions.
All of these appear to be gimmicks.
Seriously? Having Ctrl+F9 compile your project inhibts you from working on that project? Some aren't even true like the 10th. The console window actually doesn't close.
And then he jumps to say you can't use C::B for big projects.
Yea. Because C::B doesn't show closed projects in the work space there is no way in hell you can use it for big projects. I mean I NEED to see closed projects. How can you develop a big project and not be able to see closed projects? That's like the basic requirement any IDE.
Imagine this guy reviewing emacs/vim.
His list would cause a stack overflow because it would truly be endless.
Please don't forget to take into account yanevski's (youthful) exuberance towards C::B in your deliberations. Best wishes with whatever you finally decide upon, there are lots of options.
Please give this a green tick if you think your initial query is solved.
Yes, these may look like gimmicks, but if you think about it, IDEs are just over-glorified text editors. In theory you can use a a basic console text editor and run the compiler via a terminal and it will work. But will that be very productive, well, not quite. Then why settle for less when there are better alternatives available? It's not only about what C::D can't do right, but what other IDEs offer in comparison.
@kermort
I guess being overly sarcastic can be mistaken for overreaction.
@Golden Lizards
Not only in theory; In practice many people do.
But I'm not zealous about C::B I'm just poking fun at the guy who posted the review on Sourceforge.
I mean, perhaps all these things that C::B lacks breaks his work flow which is why he complains about. I can completely understand that. But to say C::B is the worst IDE ever is dishonest - if you're just saying it because it doesn't suit you! The reviewer didn't mention any advantages of other IDEs he just listed things that annoy him about Code::Blocks.
There are several mistakes in the Code::Blocks review:
3. cannot use Ctrl+Left click to go to declaration and definition;
4. cannot navigate forward and backward using Alt+Left and Alt+Right;
6. closed projects is not shown in the workspace, kind of s-t-u-p-i-d. Then what is the use of the workspace;
9. No undo/redo history, cannot go to Nth undo/redo step in the history;
3. I don't know how to enable Ctrl+Left indeed, but navigating to declaration and definition is possible.
4. It is possible to navigate forward and backward with Alt+Left and Alt+Right, just need to install one of the plugins.
6. Closed projects are not shown in the workspace, but they are available under "Recent projects"
9. I don't know what means "No undo/redo history", but multiple undos and redos are possible.
It does indeed hang sometimes(at least last version). Although Code::Blocks couldn't parse linux kernel source for navigation, it's customizable and is useful for editing medium sized projects.
Whether or not there are mistakes in the CB review, CB's capabilities pale in comparison to IDEs like Eclipse-CDT.
If you are writing code with one or two files, CB is fine. If you are writing code that spans multiple projects, requires remote debugging or anything beyond "editing code", you should be using an IDE like Eclipse.
But, like everything, there is a cost. Eclipse can use a ton of memory, and getting everything set up and configured the way you want can take a lot of time. The other downside to Eclipse is that it is rather modular, which can cause breakage at times. I cannot count the times that my ARM development plugins or Android development plugins were broken by an upgrade and required real work to get my projects functional again.
I frequently cross-compile for ARM-bases systems and use OpenOCD to upload firmware and do remote debugging. At work I have a ton of Eclipse projects, start remote builds, do remote code execution and debugging. I can switch views and do database development with ease. I can move between C++, Python and Android (Java) development depending on the file I am editing. At both home and work I do development across multiple languages and platforms. Eclipse handles all of it.
For simple sample code, gedit works fine. Or Vim. I used to like KDevelop but learned to loathe it during the transition from 3 to 4. It's ability to parse C++ expressions was horrible. I may need to give KDevelop 5 a try now that they are using clang for C++ parsing.
Code::Blocks never hit a sweet spot for me. It was either too much or too little, depending on what I was working on.