Is it common practice to include the header file more then once? In my main file i just have .h after .h listed. I always thought this way was better since I used to do it like
a.h
a.cpp
b.h
b.cpp
c.h
c.cpp
Now a days I do
a.h
b.h
c.h
with the .cpp included from the .h
If you really wanted to compile everything together in one big file, why not put just the cpp files into that one big file? Each cpp file should include all the headers it needs.
However... you can compile a bunch of cpp files separately and let the linker do the linking.
Unfortunately, I work somewhere that does "bulk builds", and I work on one particular piece of software that basically includes every relevant cpp file into one big cpp file, so my "professional" environment is almost exactly how you work, though it doesn't sound like you knew there was a choice. The main difference I guess it the build step that makes the one file that includes all the cpp files for me. After a few years of neglect, none of the cpp files have a meaningful set of headers on them any more, and static is practically meaningless as a storage type or as a way to throw a simple helper function into a file. Trust me, it's more fun to have separate compile units.
It's common practice for a header file to include what needs to be shared with other cpp files, while the cpp file includes only what it needs to compile all by itself. For example, SmartImage.cpp would include SmartImage.h, because that cpp needs to know the definition of the SmartImage class in order to compile. In your situation, it doesn't even look like you really use header files for anything, and if you got into some circular dependency situation where you really needed headers, you probably wouldn't be able to fix it without changing how you include files.
So, how do you compile your code? Depending on what tools you use, I'm sure someone here can help you set up your project.