Features
- Cover Type: Paperback with 300 pages
- Published by: O'Reilly Media, Inc.
- Edition: 3rd Edition November 19, 2004
- Written in: English
- ISBN 10 Number: 0596006101
- ISBN 13 Number: 978-0596006105
-
Book Dimensions:
9.1 x 6.9 x 0.9 inches
- Weighs: 1.1 pounds
Product Description
The utility simply known as
make is one of the most enduring features of both Unix and other operating systems. First invented in the 1970s,
make still turns up to this day as the central engine in most programming projects; it even builds the Linux kernel. In the third edition of the classic
Managing Projects with GNU make, readers will learn why this utility continues to hold its top position in project build software, despite many younger competitors. The premise behind
make is simple: after you change source files and want to rebuild your program or other output files,
make checks timestamps to see what has changed and rebuilds just what you need, without wasting time rebuilding other files. But on top of this simple principle,
make layers a rich collection of options that lets you manipulate multiple directories, build different versions of programs for different platforms, and customize your builds in other ways. This edition focuses on the GNU version of
make, which has deservedly become the industry standard. GNU make contains powerful extensions that are explored in this book. It is also popular because it is free
software and provides a version for almost every platform, including a version for
Microsoft Windows as part of the free Cygwin project.
Managing Projects with GNU make, 3rd Edition provides guidelines on meeting the requirements of large, modern projects. Also added are a number of interesting advanced topics such as portability, parallelism, and use with Java. Robert Mecklenburg, author of the third edition, has used
make for decades with a variety of platforms and languages. In this book he zealously lays forth how to get your builds to be as efficient as possible, reduce maintenance, avoid errors, and thoroughly understand what
make is doing. Chapters on C++ and Java provide makefile entries optimized for projects in those languages. The author even includes a discussion of the makefile used to build the book.
About The Author
Robert Mecklenburg began using Unix as a student in 1977 and has been programming professionally for 23 years. His make experience started in 1982 at NASA with Unix version 7. Robert received his Ph.D. in Computer Science from the University of Utah in 1991. Since then he has worked in many fields ranging from mechanical CAD to bioinformatics, and brings his extensive experience in C++, Java and Lisp to bear on the problems of project management with make.
Reader ReviewsI write a lot of Makefiles. In fact, I write a lot of Makefiles using GNU Make and finally there's a book to complement the Free Software Foundation's excellent GNU Make user guide. Also, finally, O'Reilly has updated what must have been the worst book in their entire line up: "Managing Projects with make" Robert Mecklenburg's "Managing Project with GNU Make" is a must have book if you end up writing or maintaining GNU Make Makefiles with more than 100 lines in them. You don't need it if all your Makefiles are created using ./configure, but every serious Makefile hacker should read this book. That's not to say that the book is perfect. Far from it. I was annoyed while reading the book by the author's frequent, annoying small errors (e.g. on p. 58 the author states that CURDIR contains the argument of --include-dir when in fact it contains the full path of the directory where GNU Make is looking for Makefiles) and over use of the $(eval) (more on $(eval) below). In fact, the number of errors in the book were surprising for an O'Reilly tome and it looks like the edition could use a good proof-reading. I've sent in a detailed list to the O'Reilly folks but nothing appears on their Errata web site yet. The section that describes the new $(eval) and $(value) functions available since GNU Make 3.80 is excellent (pp. 82-86). And the book contains a good discussion of the problems inherent in using recursive make (pp. 108-116) and how to implement a non-recursive make (pp. 117-123). The book is worth its cover price just for these three sections. Where I think the book really goes off track is in trying to shoehorn too many things into GNU Make. Specifically, the author talks quite a bit about ANT and spends an entire chapter showing how to replace ANT with GNU Make. I found some of the things he thinks are wrong with ANT to be silly: for example, "The Ant <mkdir