First of all, make files are designed almost to do what you want: they should only create missing or not updated parts of the project. So, if you have a project made of 100 files, and start the build process, and after compiling 50 files, the assembly will be interrupted, the next time you call the assembly, the process should restart, more or less, where it was interrupted from. This happens if the makefile is written well, and of course no one issues "make clean".
Then you talk about the fg command, but its purpose is different from what you want: if you shut down your computer, all programs will stop (and will not restart automatically). Maybe you can have a sleeping laptop and, if so, you do not need further precautions.