GNU make

Short Table of Contents

Table of Contents


Next: Overview, Previous: (dir), Up: (dir)   [Contents][Index]


GNU make

This file documents the GNU make utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them.

This is Edition 0.75, last updated 17 January 2020, of The GNU Make Manual, for GNU make version 4.3.

Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document

under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being “A GNU Manual,” and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License.”

(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom.”

Overview

  

Overview of make.

Introduction

  

An introduction to make.

Makefiles

  

Makefiles tell make what to do.

Rules

  

Rules describe when a file must be remade.

Recipes

  

Recipes say how to remake a file.

Using Variables

  

You can use variables to avoid repetition.

Conditionals

  

Use or ignore parts of the makefile based on the values of variables.

Functions

  

Many powerful ways to manipulate text.

Invoking make

  

How to invoke make on the command line.

Implicit Rules

  

Use implicit rules to treat many files alike, based on their file names.

Archives

  

How make can update library archives.

Extending make

  

Using extensions to make.

Integrating make

  

Integrating make with other tools.

Features

  

Features GNU make has over other makes.

Missing

  

What GNU make lacks from other makes.

Makefile Conventions

  

Conventions for writing makefiles for GNU programs.

Quick Reference

  

A quick reference for experienced users.

Error Messages

  

A list of common errors generated by make.

Complex Makefile

  

A real example of a straightforward, but nontrivial, makefile.

GNU Free Documentation License

  

License for copying this manual.

Concept Index

  

Index of Concepts.

Name Index

  

Index of Functions, Variables, & Directives.

Preparing

  

Preparing and running make.

Reading

  

On reading this text.

Bugs

  

Problems and bugs.

Rule Introduction

  

What a rule looks like.

Simple Makefile

  

A simple makefile.

How Make Works

  

How make processes this makefile.

Variables Simplify

  

Variables make makefiles simpler.

make Deduces

  

Letting make deduce the recipes.

Combine By Prerequisite

  

Another style of makefile.

Cleanup

  

Rules for cleaning the directory.

Makefile Contents

  

What makefiles contain.

Makefile Names

  

How to name your makefile.

Include

  

How one makefile can use another makefile.

MAKEFILES Variable

  

The environment can specify extra makefiles.

Remaking Makefiles

  

How makefiles get remade.

Overriding Makefiles

  

How to override part of one makefile with another makefile.

Reading Makefiles

  

How makefiles are read in.

Parsing Makefiles

  

How makefiles are parsed.

Secondary Expansion

  

How and when secondary expansion is performed.

Splitting Lines

  

Splitting long lines in makefiles

Rule Example

  

An example explained.

Rule Syntax

  

General syntax explained.

Prerequisite Types

  

There are two types of prerequisites.

Wildcards

  

Using wildcard characters such as ‘*’.

Directory Search

  

Searching other directories for source files.

Phony Targets

  

Using a target that is not a real file’s name.

Force Targets

  

You can use a target without a recipe or prerequisites to mark other targets as phony.

Empty Targets

  

When only the date matters and the files are empty.

Special Targets

  

Targets with special built-in meanings.

Multiple Targets

  

When to make use of several targets in a rule.

Multiple Rules

  

How to use several rules with the same target.

Static Pattern

  

Static pattern rules apply to multiple targets and can vary the prerequisites according to the target name.

Double-Colon

  

How to use a special kind of rule to allow several independent rules for one target.

Automatic Prerequisites

  

How to automatically generate rules giving prerequisites from source files themselves.

Wildcard Examples

  

Several examples.

Wildcard Pitfall

  

Problems to avoid.

Wildcard Function

  

How to cause wildcard expansion where it does not normally take place.

General Search

  

Specifying a search path that applies to every prerequisite.

Selective Search

  

Specifying a search path for a specified class of names.

Search Algorithm

  

When and how search paths are applied.

Recipes/Search

  

How to write recipes that work together with search paths.

Implicit/Search

  

How search paths affect implicit rules.

Libraries/Search

  

Directory search for link libraries.

Static Usage

  

The syntax of static pattern rules.

Static versus Implicit

  

When are they better than implicit rules?

Recipe Syntax

  

Recipe syntax features and pitfalls.

Echoing

  

How to control when recipes are echoed.

Execution

  

How recipes are executed.

Parallel

  

How recipes can be executed in parallel.

Errors

  

What happens after a recipe execution error.

Interrupts

  

What happens when a recipe is interrupted.

Recursion

  

Invoking make from makefiles.

Canned Recipes

  

Defining canned recipes.

Empty Recipes

  

Defining useful, do-nothing recipes.

Splitting Recipe Lines

  

Breaking long recipe lines for readability.

Variables in Recipes

  

Using make variables in recipes.

One Shell

  

One shell for all lines in a recipe.

Choosing the Shell

  

How make chooses the shell used to run recipes.

Parallel Output

  

Handling output during parallel execution

Parallel Input

  

Handling input during parallel execution

MAKE Variable

  

The special effects of using ‘$(MAKE)’.

Variables/Recursion

  

How to communicate variables to a sub-make.

Options/Recursion

  

How to communicate options to a sub-make.

-w Option

  

How the ‘-w’ or ‘--print-directory’ option helps debug use of recursive make commands.

Reference

  

How to use the value of a variable.

Flavors

  

Variables come in two flavors.

Advanced

  

Advanced features for referencing a variable.

Values

  

All the ways variables get their values.

Setting

  

How to set a variable in the makefile.

Appending

  

How to append more text to the old value of a variable.

Override Directive

  

How to set a variable in the makefile even if the user has set it with a command argument.

Multi-Line

  

An alternate way to set a variable to a multi-line string.

Undefine Directive

  

How to undefine a variable so that it appears as if it was never set.

Environment

  

Variable values can come from the environment.

Target-specific

  

Variable values can be defined on a per-target basis.

Pattern-specific

  

Target-specific variable values can be applied to a group of targets that match a pattern.

Suppressing Inheritance

  

Suppress inheritance of variables.

Special Variables

  

Variables with special meaning or behavior.

Substitution Refs

  

Referencing a variable with substitutions on the value.

Computed Names

  

Computing the name of the variable to refer to.

Conditional Example

  

Example of a conditional

Conditional Syntax

  

The syntax of conditionals.

Testing Flags

  

Conditionals that test flags.

Syntax of Functions

  

How to write a function call.

Text Functions

  

General-purpose text manipulation functions.

File Name Functions

  

Functions for manipulating file names.

Conditional Functions

  

Functions that implement conditions.

Foreach Function

  

Repeat some text with controlled variation.

File Function

  

Write text to a file.

Call Function

  

Expand a user-defined function.

Value Function

  

Return the un-expanded value of a variable.

Eval Function

  

Evaluate the arguments as makefile syntax.

Origin Function

  

Find where a variable got its value.

Flavor Function

  

Find out the flavor of a variable.

Make Control Functions

  

Functions that control how make runs.

Shell Function

  

Substitute the output of a shell command.

Guile Function

  

Use GNU Guile embedded scripting language.

Makefile Arguments

  

How to specify which makefile to use.

Goals

  

How to use goal arguments to specify which parts of the makefile to use.

Instead of Execution

  

How to use mode flags to specify what kind of thing to do with the recipes in the makefile other than simply execute them.

Avoiding Compilation

  

How to avoid recompiling certain files.

Overriding

  

How to override a variable to specify an alternate compiler and other things.

Testing

  

How to proceed past some errors, to test compilation.

Options Summary

  

Summary of Options

Using Implicit

  

How to use an existing implicit rule to get the recipes for updating a file.

Catalogue of Rules

  

A list of built-in rules.

Implicit Variables

  

How to change what predefined rules do.

Chained Rules

  

How to use a chain of implicit rules.

Pattern Rules

  

How to define new implicit rules.

Last Resort

  

How to define a recipe for rules which cannot find any.

Suffix Rules

  

The old-fashioned style of implicit rule.

Implicit Rule Search

  

The precise algorithm for applying implicit rules.

Pattern Intro

  

An introduction to pattern rules.

Pattern Examples

  

Examples of pattern rules.

Automatic Variables

  

How to use automatic variables in the recipe of implicit rules.

Pattern Match

  

How patterns match.

Match-Anything Rules

  

Precautions you should take prior to defining rules that can match any target file whatever.

Canceling Rules

  

How to override or cancel built-in rules.

Archive Members

  

Archive members as targets.

Archive Update

  

The implicit rule for archive member targets.

Archive Pitfalls

  

Dangers to watch out for when using archives.

Archive Suffix Rules

  

You can write a special kind of suffix rule for updating archives.

Archive Symbols

  

How to update archive symbol directories.

Guile Integration

  

Using Guile as an embedded scripting language.

Loading Objects

  

Loading dynamic objects as extensions.

Guile Types

  

Converting Guile types to make strings.

Guile Interface

  

Invoking make functions from Guile.

Guile Example

  

Example using Guile in make.

load Directive

  

Loading dynamic objects as extensions.

Remaking Loaded Objects

  

How loaded objects get remade.

Loaded Object API

  

Programmatic interface for loaded objects.

Loaded Object Example

  

Example of a loaded object

Job Slots

  

Share job slots with GNU make.

Terminal Output

  

Control output to terminals.

POSIX Jobserver

  

Using the jobserver on POSIX systems.

Windows Jobserver

  

Using the jobserver on Windows systems.

Next: Overview, Previous: (dir), Up: (dir)   [Contents][Index]