This question already has an answer here:
- How do you dive into large code bases? 31 answers
I'm looking for a suggested workflow for quickly being able to download various c/c++ open source projects and then begin intelligently navigate sources.
"Intelligently" means being able to jump around to usages, definitions, implementations of a particular symbol, both in the downloaded code base, and also the headers of referenced libraries perhaps installed in /usr/local or /System/Frameworks etc.
this code jumping could be driven by etags, ctags, gnu global, eclipse CDT indexer, Xcode's indexer, I'm open to anything, but I have no idea what is the best solution for most cases out there.
Shortly afterwards I would like to begin stepping through unit tests, examples, demos in the debugger so I can better grok how the code works
Obviously, this isn't going to be possible for every project out there.. but most of the projects I am interested in are either autotools or cmake based -- In general, I don't really care what IDE (emacs, vim, xcode, eclipse, etc) I use, and I don't mind running a command line debugger -- I just want to quickly download a C/C++ project, "fool around with it" at a source level, and then move on if its not interesting.
My question is particularly directed to the guy or gal super hacker who routinely explores several different large C/C++ projects every few days/weeks --> how do YOU productively do this?
(My background/experience level is that I know enough about c/c++ tooling to get things to build/or debug a broken build on several different os'es usually within a few minutes, but it can take hours before I get to the point where I can take a large project and get to the point where I am stepping through examples in the debugger. I have a feeling this is because I try to use modern IDE's, but I'd be better of just using 'old school' tools. when dealing with jvm stuff -- it is usually pretty quick to get to a place where one can get intellij to grok code and start debugging -- I'd like to replicated this as much as possible in C/C++)