DevOps Zone is brought to you in partnership with:

I've been a zone leader with DZone since 2008, and I'm crazy about community. Every day I get to work with the best that JavaScript, HTML5, Android and iOS has to offer, creating apps that truly make at difference, as principal front-end architect at Avego. James is a DZone Zone Leader and has posted 640 posts at DZone. You can read more from them at their website. View Full User Profile

Software Build Systems: Principles and Experience

  • submit to reddit
Published by: Addison Wesley
ISBN: 0321717287

Reviewer Ratings




Buy it now

One Minute Bottom Line

With a refreshing approach to discussing build systems and best practices, Peter Smith passes on his experiences to help you better understand how the process works, and what you should do to ensure maximum productivity.

In the software development lifecycle, build is often overlooked as 'less important'. It is heartening to see a book finally give this step the spotlight it deserves.

Finally, build experts have a definitive handbook to refer to, and other developers can gain a better appreciation of how build systems are essential for their productivity.


Split into four parts, this book provides a detailed insight into build systems, and how to ensure your own build process is as efficient and scalable as possible. 

Part One works as an introduction into build systems for those who may be unfamiliar, and as a useful primer to those who consider themselves build experts. This parts moves from a high level view of what comprises the build system, to a runtime view of the system as it executes and introduces build variants. 

Part Two is the section which stands out as one of the key selling points of the book - a comprehensive survey of five build tools, chosen based on their popularity. The tools discussed are 

  • GNU Make
  • Ant
  • SCons
  • CMake
  • Eclipse

As a developer who works on Eclipse based products, I had hoped this section would be more than just a discussion of the IDE build features, such as discussing PDE build or the various build options available. However, as an overview of how to build up a project from within the Eclipse IDE, it serves it's purpose. 

Part Three of the book moves onto more advanced concepts, including working out dependencies for a build and whether it needs to be recompiled or not, and how to package up your software for installation on a machine. At the end of this part, two chapters deal with best practices around the management of build machines, and the same for compilation tools. 

Part Four focusses on the scalability of your build system, covering topics such as making your build more efficient and faster, reducing the complexity of the system and managing the size of the build. 

This book should appeal to a wide audience. The book works whether you're a developer who wants to know more about build systems, a manager trying to make the best decision for their team or a build expert that wants more indepth knowledge of various approaches available.