The main difference between gmake and make is that gmake has more fancy features. The original Unix make was OK for automated compiling and linking of C and assembly code, but gmake added features that made it more convenient. Fewer, shorter (and more cryptic
rules), conditional operations in the build process, stuff like that.
Make/gmake is often assisted in the build process. The "configure" tool can be used to check to see if all of the build dependencies are present in the system and to construct a makefile. Here dependencies aren't just libraries, it also checks to see if certain tools are installed, and it does things like check the compiler being used to make sure that certain features are supported. Unlike, say, Maven, the configure utility does not attempt to resolve dependencies, just make sure that they are satisfied. Then there are the "make makers", such as cmake, which help generate makefiles.
There's a classic triad of commands used to build many of the Linux applications and libraries. It goes like this:
Often people will use the "tee" command on the make stage so that build output not only displays on the console, but also gets recorded to a log file.