If you want try out gmake:-
mkdir <some_scratch_directory> cd <some_scratch_directory> cp ~west/ttp/manual/unix_programming/cpp/* ./
now type:-
gmake
Then try:-
touch Animal.h gmake
The command touch just updates the current date stamp on
Animal.h
so that you can see how gmake just rebuilds anything
that directly, or indirectly, depends on Animal.h.
Finally type:-
gmake clean
to tidy up.