#

Go to the first, previous, next, last section, table of contents.

@shorttitlepage GNU Make Copyright (C) 1988, '89, '90, '91, '92, '93, '94, '95, '96, '97 Free Software Foundation, Inc.

Published by the Free Software Foundation
59 Temple Place -- Suite 330,
Boston, MA 02111-1307 USA
Printed copies are available for $20 each.
ISBN 1-882114-80-9

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.

Cover art by Etienne Suvasa.

- 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.
- Commands: Commands 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.
- make Invocation: 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.
- Features: Features GNU `make` has over other `make`s.
- Missing: What GNU `make` lacks from other `make`s.
- Makefile Conventions: Conventions for makefiles in GNU programs.
- Quick Reference: A quick reference for experienced users.
- Make Errors: A list of common errors generated by `make`.
- Complex Makefile: A real example of a straightforward, but nontrivial, makefile.
- Concept Index: Index of Concepts
- Name Index: Index of Functions, Variables, & Directives -- The Detailed Node Listing --- Overview of `make`
- Reading: On Reading this Text
- Bugs: Problems and Bugs An Introduction to Makefiles
- 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 Commands
- Combine By Dependency: Another Style of Makefile
- Cleanup: Rules for Cleaning the Directory Writing Makefiles
- 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. Writing Rules
- Rule Syntax: General syntax explained.
- 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 commands or dependencies 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 dependencies according to the target name.
- Double-Colon: How to use a special kind of rule to allow several independent rules for one target.
- Automatic Dependencies: How to automatically generate rules giving dependencies from the source files themselves. Using Wildcard Characters in File Names
- Wildcard Examples: Several examples
- Wildcard Pitfall: Problems to avoid.
- Wildcard Function: How to cause wildcard expansion where it does not normally take place. Searching Directories for Dependencies
- General Search: Specifying a search path that applies to every dependency.
- Selective Search: Specifying a search path for a specified class of names.
- Search Algorithm: When and how search paths are applied.
- Commands/Search: How to write shell commands that work together with search paths.
- Implicit/Search: How search paths affect implicit rules.
- Libraries/Search: Directory search for link libraries. Static Pattern Rules
- Static Usage: The syntax of static pattern rules.
- Static versus Implicit: When are they better than implicit rules? Writing the Commands in Rules
- Echoing: How to control when commands are echoed.
- Execution: How commands are executed.
- Parallel: How commands can be executed in parallel.
- Errors: What happens after a command execution error.
- Interrupts: What happens when a command is interrupted.
- Recursion: Invoking `make` from makefiles.
- Sequences: Defining canned sequences of commands.
- Empty Commands: Defining useful, do-nothing commands. Recursive Use of `make`
- 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. How to Use Variables
- 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.
- Defining: An alternate way to set a variable to a verbatim string.
- Environment: Variable values can come from the environment.
- Automatic: Some special variables have predefined meanings for use with implicit rules. Advanced Features for Reference to Variables
- Substitution Refs: Referencing a variable with substitutions on the value.
- Computed Names: Computing the name of the variable to refer to. Conditional Parts of Makefiles
- Conditional Example: Example of a conditional
- Conditional Syntax: The syntax of conditionals.
- Testing Flags: Conditionals that test flags. Functions for Transforming Text
- Syntax of Functions: How to write a function call.
- Text Functions: General-purpose text manipulation functions.
- File Name Functions: Functions for manipulating file names.
- Foreach Function: Repeat some text with controlled variation.
- Origin Function: Find where a variable got its value.
- Shell Function: Substitute the output of a shell command. How to Run `make`
- 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 commands 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 Rules
- Using Implicit: How to use an existing implicit rule to get the commands for updating a file.
- Catalogue of Rules: A list of built-in implicit 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 defining commands 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. Defining and Redefining Pattern Rules
- Pattern Intro: An introduction to pattern rules.
- Pattern Examples: Examples of pattern rules.
- Automatic: How to use automatic variables in the commands 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. Using `make` to Update Archive Files
- 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. Implicit Rule for Archive Member Targets
- Archive Symbols: How to update archive symbol directories.

# Overview of `make`

The `make` utility automatically determines which pieces of a large program need to be recompiled, and issues commands to recompile them. This manual describes GNU `make`, which was implemented by Richard Stallman and Roland McGrath. GNU `make` conforms to section 6.2 of IEEE Standard 1003.2-1992 (POSIX.2).

Our examples show C programs, since they are most common, but you can use `make` with any programming language whose compiler can be run with a shell command. Indeed, `make` is not limited to programs. You can use it to describe any task where some files must be updated automatically from others whenever the others change.

- Reading: On Reading this Text
- Bugs: Problems and Bugs

Go to the first, previous, next, last section, table of contents.