In a compiled language, the makefile is arguably the most important part of any
programming project. To compile your project, you first have to compile each
source file into an object file, which in turn needs to be linked with system
libraries into the final executable file. Each command can have a
considerable number of arguments added in.