In order to compile and link multiple C++ source and header files without invoking the g++ command for every one, makefiles can be used. A makefile contains a list of files that need to be created to compile a program. These file are called targets. For each target, the files that it depends on are listed as well as the command to build the target. The syntax looks like this:
target: dependency1 dependency2 dependency3 command for building target
So the following makefile would compile the files max2.cpp
,
max2.h
, and main.cpp
from Chapter 2 of
Weiss.
max2.o: max2.h max2.cpp g++ -c max2.cpp main.o: main.cpp g++ -c main.cpp main: max2.o main.o g++ max2.o main.o -o main
Note that there is one entry for each of the commands that are required
to compile the program. However, when the makefile is executed only
the commands that depend on changed files are executed.
The make file must be named Makefile
. To compile the
above program you would use the make command with the name of the target
for the program. For the above example you would enter:
make main