I need to put more into this article.
The "make" utility helps compiling, linking and making executables. In it's
simplest form, it "makes" files conditionally depending on whether they are out
of date or non-existing relative to other files that are dependents. In other
words, if an executable is older than the source files that create them, then
the executable is made by compiling the source files. For Visual C++ (VC) there
is a modified make called nmake.
When using VC, we usually do not use nmake or make, but the process that VC
does do when a project is built is based on what make would do to build a
project. I will explain later.
A compiler such as the Visual C++ (VC) compiler converts source language to
machine code. The machine code cannot be executed directly; it must be linked
with other code. The output of most compilers is object files. Every input file
(.c or .cpp) for the compiler is compiled to a object file. Note that include
files (.h) are processed due to #include statements; they are not what is meant
by an input file.
The linker combines object files into an executable file (exe or dll). The
use of object files and the linker allows us to have multiple source files. It
is even possible to combine object files from more than one compiler; that is,
from source files in more than one language.