This problem comes up quite a bit for me. I'll have a project that I work on for a couple months (the point is that it is a large project with multiple classes, etc). As an example, say I made a program that draws a square. So I have this project all setup in KDevelop (or image Visual Studio for all you non-linux-ers!) called Square. Now, moving on to bigger and better things, I want to draw a checkerboard, using all the functionality I have just put into drawing a square. So I make a project called Checkerboard, and either add the Square directory to the Include path, or copy some of the files from square into checkerboard, or do something like that. As soon as there are a couple of levels of this, it gets really out of hand.
Is there some concept that I'm missing to be able to layer projects/thoughs on each other like this. The problem is that the next project is thought of after analysing the results from the first one, so it's not like I could have just made the Checkerboard project from the beginning, because I didn't know I was going to make a checkerboard, I only knew I was going to make a square!
Does this make sense? How does everyone do this?