Top (GNU make)

From Get docs
Make/docs/latest/index

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]