I'm currently using KDevelop, it works ok, but it doesn't always do code completion, or identify function locations correctly, so I have to fallback to using grep to find out where a function is called, or to find a function definition.
I also want to be able to see call graphs, so that I can see what's calling a particular function - something that IntelliJ does very well for Java code.
Does anyone have any suggestions?
I'm starting to look at Operating Systems in an attempt to improve my development skills and wondered if there were any kernel developers out there who have a preferred or recommended configuration, or can point me to an official response? (distro, IDE, etc.)
UPDATE: Thanks for the info guys, I'm going to aim to use Vim/Emacs (I'll try both) for my code editor and keep everything on the command line. I'll be using a VM for testing as I'm mainly looking at an ARM target (most of you will have heard of the Raspberry Pi by now?) and use LDD to get a grasp of what's going on. I'll be studying the boot of the Kernel too to help with the ARM boot process.
Depending on what you want to do there are number to choose from. However I think the closest one to visual studio equivalent will be eclipse.
From the FAQ:
Eclipse is an open source community whose projects are focused on building an extensible development platform, runtimes and application frameworks for building, deploying and managing software across the entire software lifecycle. Many people know us, and hopefully love us, as a Java IDE but Eclipse is much more than a Java IDE.
The Eclipse open source community has over 200 open source projects. These projects can be conceptually organized into seven different "pillars" or categories:
- Enterprise Development
- Embedded and Device Development
- Rich Client Platform
- Rich Internet Applications
- Application Frameworks
- Application Lifecycle Management (ALM)
- Service Oriented Architecture (SOA)
The Eclipse community is also supported by a large and vibrant ecosystem of major IT > > > solution providers, innovative start-ups, universities and research institutions and > individuals that extend, support and complement the Eclipse Platform.
One very exciting thing about Eclipse is that many people are using Eclipse in ways that we have never imagined. The common thread is that they are building innovative, industrial-strength software and want to use great tools, frameworks and runtimes to make their job easier.
It is all just a matter of personal preference.
Apart from what was mentioned in a similar question, I would like to name two more.
In our kernel-related projects, my colleagues and I currently use Geany lightweight IDE which is more than enough for us.
I also use Code::Blocks that resembles Visual Studio 2003 very much, it also does its job well. It has more advanced code completion features than Geany, I suppose.
What I would recommend is that you don't stick to any IDE's per say. Let your code stay as flat files in the filesystem, and use independent tools (Emacs, the GCC toolchain, Ctags, etc) you have to for implementing the operations you have to implement. That will keep your codebase IDE-independant and free of clutter that surrounds it (like .project files, etc).
I can only talk from experience, so it probably doesn't encompass projects the size of yours. I use Code::Blocks for development in C and C++.
The general Idea however, is to make clever use of things like git, vim, ctags, etc., and keep everything unbound to a specific IDE. The trick is, not to force developers to use a certain IDE. Everyone on your project should use whatever development technique and programs they like.
As for managing large amounts of files, let the filesystem do the job. Make use of folders and descriptive files, as well as comments inside your code.