Software build systems : principles and experience

“This book represents a thorough and extensive treatment of the software build process including the choices, benefits, and challenges of a well designed build process. I recommend it not only to all software build engineers but to all software developers since a well designed build process is key t...

Descripción completa

Detalles Bibliográficos
Otros Autores: Smith, Peter Author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: [Place of publication not identified] Addison Wesley 2011
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629261806719
Tabla de Contenidos:
  • Cover
  • CONTENTS
  • PREFACE
  • Why Do Build Systems Become Complex?
  • The True Cost of a Build System
  • The Focus of This Book
  • Who Should Read This Book?
  • How This Book Is Organized
  • Summary
  • ACKNOWLEDGMENTS
  • ABOUT THE AUTHOR
  • PART I: THE BASICS
  • Chapter 1 BUILD SYSTEM OVERVIEW
  • What Is a Build System?
  • Components of a Build System
  • The Build Process and Build Description
  • How a Build System Is Used
  • Build System Quality
  • Summary
  • Chapter 2 A MAKE-BASED BUILD SYSTEM
  • Calculator Example
  • Creating a Simple Makefile
  • Simplifying the Makefile
  • Additional Build Targets
  • Using a Framework
  • Summary
  • Chapter 3 THE RUNTIME VIEW OF A PROGRAM
  • Executable Programs
  • Libraries
  • Configuration and Data Files
  • Distributed Programs
  • Summary
  • Chapter 4 FILE TYPES AND COMPILATION TOOLS
  • C/C++
  • Java
  • C#
  • Other File Types
  • Summary
  • Chapter 5 SUBTARGETS AND BUILD VARIANTS
  • Building Subtargets
  • Building Different Editions of the Software
  • Building Different Target Architectures
  • Summary
  • PART II: THE BUILD TOOLS
  • Chapter 6 MAKE
  • The GNU Make Programming Language
  • Real-World Build System Scenarios
  • Praise and Criticism
  • Similar Tools
  • Summary
  • Chapter 7 ANT
  • The Ant Programming Language
  • Real-World Build System Scenarios
  • Praise and Criticism
  • Similar Tools
  • Summary
  • Chapter 8 SCons
  • The SCons Programming Language
  • Real-World Build System Scenarios
  • Praise and Criticism
  • Similar Tools
  • Summary
  • Chapter 9 CMAKE
  • The CMake Programming Language
  • Real-World Build System Scenarios
  • Praise and Criticism
  • Similar Build Tools
  • Summary
  • Chapter 10 ECLIPSE
  • The Eclipse Concepts and GUI
  • Real-World Build System Scenarios
  • Praise and Criticism
  • Similar Build Tools
  • Summary
  • PART III: ADVANCED TOPICS
  • Chapter 11 DEPENDENCIES.
  • The Dependency Graph
  • The Problem with Bad Dependencies
  • Step 1: Computing the Dependency Graph
  • Step 2: Determining Which Files Are Out-of-Date
  • Step 3: Sequencing the Compilation Steps
  • Summary
  • Chapter 12 BUILDING WITH METADATA
  • Debugging Support
  • Profiling Support
  • Coverage Support
  • Source Code Documentation
  • Unit Testing
  • Static Analysis
  • Adding Metadata to a Build System
  • Summary
  • Chapter 13 SOFTWARE PACKAGING AND INSTALLATION
  • Archive Files
  • Package-Management Tools
  • Custom-Built GUI Installation Tools
  • Summary
  • Chapter 14 VERSION MANAGEMENT
  • What Should Be Version-Controlled
  • What Should Not Be in the Source Tree
  • Version Numbering
  • Summary
  • Chapter 15 BUILD MACHINES
  • Native and Cross-Compilation
  • Centralized Development Environments
  • Open-Source Development Environments
  • GNU Autoconf
  • Summary
  • Chapter 16 TOOL MANAGEMENT
  • Rules for Managing Tools
  • Writing Your Own Compilation Tools
  • Summary
  • PART IV: SCALING UP
  • Chapter 17 REDUCING COMPLEXITY FOR END USERS
  • Build Frameworks
  • Reasons to Avoid Supporting Multiple Variants
  • Various Ways to Reduce Complexity
  • Scheduling and Staffing Build System Changes
  • Summary
  • Chapter 18 MANAGING BUILD SIZE
  • The Problem with Monolithic Builds
  • Component-Based Software
  • People and Process Management
  • Apache Ivy
  • Chapter 19 FASTER BUILDS
  • Measuring Build System Performance
  • Build Avoidance: Eliminating Unnecessary Rebuilds
  • Parallelism
  • Reducing Disk Usage
  • Summary
  • REFERENCES
  • INDEX.