Build Engineers need to know a lot about different tools. You might think that having a strong understanding of Ant or Make will suffice, but the fact is that every now and then you may have to work with legacy build systems written using Makefiles. Make has been around a long time and used on many platforms. Now don't get the idea that GNU Make is a legacy tool itself. GNU Make has been and continues to be a modern and robust build tool.GNU Make has been and continues to be a modern and robust build tool.
If you want to be a qualified build engineer then this excellent tool must be in your skillset.
You can download a copy of GNU Make from the GNU website.
Makefiles contain directives that are generally of the form:
> target: dependency
> commands 
Let's start with a simple C++ program to print out hello world.
(If you are blind and trying to read this code via a reader then drop me an email and I will send it to you -
. I used to be blind and glad to network with other blinks :-)
This code simply prints out the message "Hello World!".
Both Ant and Maven use XML, while Make uses directives in a slightly different format.
The Makefile to build this simple program looks like
(Hey if you are blind looking at this through a reader just send me an email and I will send you the code directly -
Running the Makefile and viewing the results
You will notice that Make created the hello executable (shown in green). The hello.o is a binary object file derived as an intermediate step from the hello.cpp (which is the source code shown above).
Here is an example of a Makefile with two dependencies. In this example, we will compile a C Language program .
In this example, Make first creates util.o from util.c and main.o from main.c. Next, Make links main.o and util.o to create the main executable.
 Managing Projects with GNU Make by Robert Mecklenburg, O'Reilly Media Inc., p. 4
 The C Programming Language by Brian Kernighan and Dennis Ritchie, Bell Telephone Laboratories, Inc. 1988
More articles by this author