Sebastopol, CA--As software becomes more complex, the tools that programmers use and their mastery of them play a large part in their success rate. One of the most enduring tools is the utility known simply as "make." First invented in 1970, make still turns up as the central engine in most programming projects; it even builds the Linux kernel. And although it's not what many would consider a power tool, countless programmers swear by it. "Make is arguably one of the most important tools a programmer has, next to his editor, compiler, and debugger, in that order," says Robert Mecklenburg, author of the new edition of Managing Projects with GNU Make, Third Edition (O'Reilly, US 29.95).
The premise behind make is as simple as its name: 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. In addition to 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 completely revised and updated edition focuses on the GNU version of make, which has deservedly become the industry standard. "Traditional make is often viewed as being hopelessly outdated," explains Mecklenburg. "Thus, developers have been abandoning it for newer tools such as cmake, scion, and Ant. GNU make is a fully backward-compatible make that doesn't suffer from the lack of features many developers attribute to traditional make. Therefore, there's no reason to embark on developing new tools, learning new syntax, or tripping over new bugs."
Mecklenburg notes that in its latest release, GNU make added the eval function, which dramatically extends its capabilities: "This new feature, along with its many other unique features, demands a reassessment of make's role in the software development process. Unless the full capabilities of the tool are understood by developers, they can't make informed choices about how their projects should be realized."
Few programmers understand make as well as Mecklenburg does. He recounts an incident in which he was training a programmer in maintaining the build system for a large project: "As we delved further into the makefile he would stare, wide-eyed and say, 'This isn't make!' or 'Make can't do that!' Of course, that's the normal reaction of people who learned make in the 70s, 80s, or 90s and never went back to learn make's new features." Mecklenburg also notes that the universal reaction to the make object system he developed--which he describes in the appendix of his book--is, "Make is not a programming language!" and "That's unnatural!"
Managing Projects with GNU Make shows developers how to get their 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 areas. Mecklenburg even includes a discussion of the makefile used to build this book. It's a must-read for anyone who uses make.Praise for the previous edition:
"'Managing Projects with make' is an excellent guide to this amazingly useful tool. Indeed the book deserves to be rated right up there with the camel and the bat as a classic in the O'Reilly bestiary."
--Dan Hanks, Provo LUG, July 2002
"I use make very frequently in my day-to-day work and thought I knew everything that I needed to know about it. After reading this book I realized that I was wrong!"
--Rob Henley, Siemens-Nixdorf
"If you can't pick up your system's yp makefile, read every line, and make sense of it, you need this book."
--Root Journal, Sept/Oct 1990
- Chapter 12, "Debugging Makefiles"
- More information about the book, including table of contents, index, author bio, and samples
- A cover graphic in JPEG format
O’Reilly Media spreads the knowledge of innovators through its books, online services, magazines, and conferences. Since 1978, O’Reilly Media has been a chronicler and catalyst of cutting-edge development, homing in on the technology trends that really matter and spurring their adoption by amplifying “faint signals” from the alpha geeks who are creating the future. An active participant in the technology community, the company has a long history of advocacy, meme-making, and evangelism.