Managing Projects with GNU Make: The Power of GNU Make for Building Anything (Nutshell Handbooks) 3rd Edition
| Robert Mecklenburg (Author) Find all the books, read about the author, and more. See search results for this author |
Use the Amazon App to scan ISBNs and compare prices.
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 needs 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.
Frequently bought together
Customers who viewed this item also viewed
Editorial Reviews
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 he brings his extensive experience in C++, Java, and Lisp to bear on the problems of project management with make.
Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Product details
- Publisher : O'Reilly Media; 3rd edition (November 29, 2004)
- Language : English
- Paperback : 302 pages
- ISBN-10 : 0596006101
- ISBN-13 : 978-0596006105
- Item Weight : 1.07 pounds
- Dimensions : 7 x 0.7 x 9.19 inches
- Best Sellers Rank: #166,337 in Books (See Top 100 in Books)
- #13 in Software Utilities
- #46 in Unix Operating System
- #101 in Linux Operating System
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
I think, in reality, and in sum, this book is not a necessary addition to any respectable developer's bookshelf, especially since the majority of Makefiles never broach this level of complexity. But I do really love books like this, possibly for perverse reasons -- books that push a particular technology right to the cusp of its abusive breaking point. You learn something intangible when you see how far you can flex a language, much the same way as you learn something when you attach a racing spoiler to the back of your Honda Civic. It's not the vehicle but the driver who's transformed. It's not the point but the purview that we're after. Or, as my toddler daughter sometimes so elegantly espouses: you are what you Make of.
This is a good book if you already know a basic use of "make". If you are completely new to make you should first search on-line documentation, I suppose.
I was a recursive-make fan before, but now I find that the non-recursive approach suggested here is really interesting. Probably the best is a mixed-architecture.
I don't like the implicit rules usage promoted: I prefer to define all the compiling options explicitly.
Make is a strange, very powerful non-procedural language for projects managing, and this book tries to explain its obscure characteristics.
If you plan to use the examples as a base for your own makefiles, take a look at the erratas on the O'Reilly website (there are some typos in the less common used procedures, personally I've found a lot in the make-depend parts).
The author continually does this for at least the first 20 pages, where it took me hours to figure out what files he used and what were supposed to be in the files. This should have only taken me as long as it takes to type the files into the computer. There are supposed to be five files: counter.h lexer.h count_words.c counter.c and lexer.l. I don't understand why the auther cannot simply say "the text below define *.*", then write it out, instead of making the reader guess at what he is talking about. On page 20 he talks about refactoring the 'main' program, but what he really means is creating a new file called 'counter.c' not rewriting the 'main' program in 'count_words.c'.
It's too bad the author has decided to write in such an ambiguous style because his explainations of make features are very good, unfortunately, I can't verify this using his examples because he thinks his readers can read his mind.
The frustration caused by this lack of explicitness for his examples is the reason I give this book one star. Instead of simply using his examples, I have to figure out what the heck he is talking about, then try to use them the way he is. I'm spending orders of magnitudes more on this guessing than I am on learning make, which is why this book sucks. I'm only on page 20 and all ready I don't really want to use this book. I guess if you all ready know how to use make and just want a reference, this book is probably fine as you have plenty of your own examples to follow. But I do not.
Top reviews from other countries
Maybe it isn't simple. Maybe I've picked the wrong tool with make, and am taking it out on the book.
But I can't believe that I need to read about all the arcane rules behind the 2-stage variable & macro expansion, and all the ugly control structures that make-as-a-sub-par-programming-language-rather-than-build-tool possesses, before I see a make file that compiles an average C++ project.
If I do, then I offer my apologies to the author, for I have indeed picked the wrong tool, but as it stands, it feels like the author's enthusiasm to communicate the obscure minutae of make has completely obfuscated how one might practically use it. You get the impression that he prefers coding in make to coding in whatever real language a project is supposed to be built with.
Man, I wish the Pragmatic Programmers had written a make book!
Das Buch ist verständlich geschrieben und enthält viele Beispiele welche detailliert erklährt werden.
Je n'avais qu'une connaissance superficielle de make, et ce livre m'a beaucoup aidé. Il conviendra bien au débutant, nonobstant ce qui est indiqué plus haut.
Un conseil : prendre quelques notes en cours de lectures, car tout n'est pas facilement présent dans l'index, pourtant bien fait (car certaines choses sont difficilement indexable).
Ce livre ne cherche pas l'exhaustif, mais plutôt la pédagogie, et balaie l'essentiel.







