Books & Videos

Table of Contents

  1. Chapter 1 The Basics Revisited

    1. Getting Environment Variables into GNU make

    2. Setting Variables from Outside the Makefile

    3. The Environment Used by Commands

    4. The $(shell) Environment

    5. Target-Specific and Pattern-Specific Variables

    6. Version Checking

    7. Using Boolean Values

    8. Logical Operations Using Boolean Values

    9. Command Detection

    10. Delayed Variable Assignment

    11. Simple List Manipulation

    12. User-Defined Functions

    13. Recent GNU make Versions: 3.81, 3.82, and 4.0

  2. Chapter 2 Makefile Debugging

    1. Printing the Value of a Makefile Variable

    2. Dumping Every Makefile Variable

    3. Tracing Variable Values

    4. Tracing Rule Execution

    5. Makefile Assertions

    6. An Interactive GNU make Debugger

    7. Dynamic Breakpoints in the GNU make Debugger

    8. An Introduction to remake

  3. Chapter 3 Building and Rebuilding

    1. Rebuilding When CPPFLAGS Changes

    2. Rebuilding When a File’s Checksum Changes

    3. Automatic Dependency Generation

    4. Atomic Rules in GNU make

    5. Painless Non-recursive make

  4. Chapter 4 Pitfalls and Problems

    1. GNU make Gotcha: ifndef and ?=

    2. $(shell) and := Go Together

    3. $(eval) and Variable Caching

    4. The Trouble with Hidden Targets

    5. GNU make’s Escaping Rules

    6. The Trouble with $(wildcard)

    7. Making Directories

    8. GNU make Meets Filenames with Spaces

    9. Path Handling

    10. Usman’s Law

    11. Pitfalls and Benefits of GNU make Parallelization

    12. Making $(wildcard) Recursive

    13. Which Makefile Am I In?

  5. Chapter 5 Pushing the Envelope

    1. Doing Arithmetic

    2. Making an XML Bill of Materials

    3. Advanced User-Defined Functions

    4. GNU make 4.0 Loadable Objects

    5. Using Guile in GNU make

    6. Self-Documenting Makefiles

  6. Chapter 6 The GNU Make Standard Library

    1. Importing the GMSL

    2. Calling a GMSL Function

    3. Checking the GMSL Version

    4. Example Real-World GMSL Use

    5. GMSL Reference

  1. Appendix Updates