Oh, I faced this problem so often :)
I would recommend you creating one directory, call it eg. "project". In
this directory you create a subdirectory "universal" with files that are
independent from the controller type. In that "universal" directory you
have one entry file, for example "universal.c" which includes all
necessary headers and files.
Then, create a second subdirectory in the "project" directory, call it
eg. "ATMega8". In this directory you create a project that uses the
specific controller (in this case ATMega8). In the "main.c" you #include
the "universal.c". For this, you have to add the directory path
"..\..\universal" in the compiler settings.
Like this, you can create multiple other subdirectories in the "project"
folder for other controller types and you don't have to create redundand
code.
I hope I explained it understandable :)