1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
3
<!-- This file documents the GNU make utility, which determines
4
automatically which pieces of a large program need to be recompiled,
5
and issues the commands to recompile them.
7
This is Edition 0.70, last updated 1 April 2006,
8
of The GNU Make Manual, for GNU make version 3.81.
10
Copyright C 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
11
1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006
12
Free Software Foundation, Inc.
14
Permission is granted to copy, distribute and/or modify this document
15
under the terms of the GNU Free Documentation License, Version 1.2 or
16
any later version published by the Free Software Foundation; with no
17
Invariant Sections, with the Front-Cover Texts being "A GNU Manual,"
18
and with the Back-Cover Texts as in (a) below. A copy of the
19
license is included in the section entitled "GNU Free Documentation
22
(a) The FSF's Back-Cover Text is: "You have freedom to copy and modify
23
this GNU Manual, like GNU software. Copies published by the Free
24
Software Foundation raise funds for GNU development."
27
<!-- Created on August, 17 2009 by texi2html 1.78 -->
29
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
30
Karl Berry <karl@freefriends.org>
31
Olaf Bachmann <obachman@mathematik.uni-kl.de>
33
Maintained by: Many creative people.
34
Send bugs and suggestions to <texi2html-bug@nongnu.org>
38
<title>GNU make: Table of Contents</title>
40
<meta name="description" content="GNU make: Table of Contents">
41
<meta name="keywords" content="GNU make: Table of Contents">
42
<meta name="resource-type" content="document">
43
<meta name="distribution" content="global">
44
<meta name="Generator" content="texi2html 1.78">
45
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
46
<style type="text/css">
48
a.summary-letter {text-decoration: none}
49
pre.display {font-family: serif}
50
pre.format {font-family: serif}
51
pre.menu-comment {font-family: serif}
52
pre.menu-preformatted {font-family: serif}
53
pre.smalldisplay {font-family: serif; font-size: smaller}
54
pre.smallexample {font-size: smaller}
55
pre.smallformat {font-family: serif; font-size: smaller}
56
pre.smalllisp {font-size: smaller}
57
span.roman {font-family:serif; font-weight:normal;}
58
span.sansserif {font-family:sans-serif; font-weight:normal;}
59
ul.toc {list-style: none}
66
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
68
<a name="SEC_Contents"></a>
69
<table cellpadding="1" cellspacing="1" border="0">
70
<tr><td valign="middle" align="left">[<a href="make.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
71
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
72
<td valign="middle" align="left">[<a href="make_19.html#SEC148" title="Index">Index</a>]</td>
73
<td valign="middle" align="left">[<a href="make_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
75
<h1>Table of Contents</h1>
76
<div class="contents">
79
<li><a name="TOC1" href="make_1.html#SEC1">1. Overview of <code>make</code></a>
81
<li><a name="TOC2" href="make_1.html#SEC3">1.1 How to Read This Manual</a></li>
82
<li><a name="TOC3" href="make_1.html#SEC4">1.2 Problems and Bugs</a></li>
84
<li><a name="TOC4" href="make_2.html#SEC5">2. An Introduction to Makefiles</a>
86
<li><a name="TOC5" href="make_2.html#SEC6">2.1 What a Rule Looks Like</a></li>
87
<li><a name="TOC6" href="make_2.html#SEC7">2.2 A Simple Makefile</a></li>
88
<li><a name="TOC7" href="make_2.html#SEC8">2.3 How <code>make</code> Processes a Makefile</a></li>
89
<li><a name="TOC8" href="make_2.html#SEC9">2.4 Variables Make Makefiles Simpler</a></li>
90
<li><a name="TOC9" href="make_2.html#SEC10">2.5 Letting <code>make</code> Deduce the Commands</a></li>
91
<li><a name="TOC10" href="make_2.html#SEC11">2.6 Another Style of Makefile</a></li>
92
<li><a name="TOC11" href="make_2.html#SEC12">2.7 Rules for Cleaning the Directory</a></li>
94
<li><a name="TOC12" href="make_3.html#SEC13">3. Writing Makefiles</a>
96
<li><a name="TOC13" href="make_3.html#SEC14">3.1 What Makefiles Contain</a></li>
97
<li><a name="TOC14" href="make_3.html#SEC15">3.2 What Name to Give Your Makefile</a></li>
98
<li><a name="TOC15" href="make_3.html#SEC16">3.3 Including Other Makefiles</a></li>
99
<li><a name="TOC16" href="make_3.html#SEC17">3.4 The Variable <code>MAKEFILES</code></a></li>
100
<li><a name="TOC17" href="make_3.html#SEC18">3.5 The Variable <code>MAKEFILE_LIST</code></a></li>
101
<li><a name="TOC18" href="make_3.html#SEC19">3.6 Other Special Variables</a></li>
102
<li><a name="TOC19" href="make_3.html#SEC20">3.7 How Makefiles Are Remade</a></li>
103
<li><a name="TOC20" href="make_3.html#SEC21">3.8 Overriding Part of Another Makefile</a></li>
104
<li><a name="TOC21" href="make_3.html#SEC22">3.9 How <code>make</code> Reads a Makefile</a></li>
105
<li><a name="TOC22" href="make_3.html#SEC26">3.10 Secondary Expansion</a></li>
107
<li><a name="TOC23" href="make_4.html#SEC30">4. Writing Rules</a>
109
<li><a name="TOC24" href="make_4.html#SEC31">4.1 Rule Example</a></li>
110
<li><a name="TOC25" href="make_4.html#SEC32">4.2 Rule Syntax</a></li>
111
<li><a name="TOC26" href="make_4.html#SEC33">4.3 Types of Prerequisites</a></li>
112
<li><a name="TOC27" href="make_4.html#SEC34">4.4 Using Wildcard Characters in File Names</a>
114
<li><a name="TOC28" href="make_4.html#SEC35">4.4.1 Wildcard Examples</a></li>
115
<li><a name="TOC29" href="make_4.html#SEC36">4.4.2 Pitfalls of Using Wildcards</a></li>
116
<li><a name="TOC30" href="make_4.html#SEC37">4.4.3 The Function <code>wildcard</code></a></li>
118
<li><a name="TOC31" href="make_4.html#SEC38">4.5 Searching Directories for Prerequisites</a>
120
<li><a name="TOC32" href="make_4.html#SEC39">4.5.1 <code>VPATH</code>: Search Path for All Prerequisites</a></li>
121
<li><a name="TOC33" href="make_4.html#SEC40">4.5.2 The <code>vpath</code> Directive</a></li>
122
<li><a name="TOC34" href="make_4.html#SEC41">4.5.3 How Directory Searches are Performed</a></li>
123
<li><a name="TOC35" href="make_4.html#SEC42">4.5.4 Writing Shell Commands with Directory Search</a></li>
124
<li><a name="TOC36" href="make_4.html#SEC43">4.5.5 Directory Search and Implicit Rules</a></li>
125
<li><a name="TOC37" href="make_4.html#SEC44">4.5.6 Directory Search for Link Libraries</a></li>
127
<li><a name="TOC38" href="make_4.html#SEC45">4.6 Phony Targets</a></li>
128
<li><a name="TOC39" href="make_4.html#SEC46">4.7 Rules without Commands or Prerequisites</a></li>
129
<li><a name="TOC40" href="make_4.html#SEC47">4.8 Empty Target Files to Record Events</a></li>
130
<li><a name="TOC41" href="make_4.html#SEC48">4.9 Special Built-in Target Names</a></li>
131
<li><a name="TOC42" href="make_4.html#SEC49">4.10 Multiple Targets in a Rule</a></li>
132
<li><a name="TOC43" href="make_4.html#SEC50">4.11 Multiple Rules for One Target</a></li>
133
<li><a name="TOC44" href="make_4.html#SEC51">4.12 Static Pattern Rules</a>
135
<li><a name="TOC45" href="make_4.html#SEC52">4.12.1 Syntax of Static Pattern Rules</a></li>
136
<li><a name="TOC46" href="make_4.html#SEC53">4.12.2 Static Pattern Rules versus Implicit Rules</a></li>
138
<li><a name="TOC47" href="make_4.html#SEC54">4.13 Double-Colon Rules</a></li>
139
<li><a name="TOC48" href="make_4.html#SEC55">4.14 Generating Prerequisites Automatically</a></li>
141
<li><a name="TOC49" href="make_5.html#SEC56">5. Writing the Commands in Rules</a>
143
<li><a name="TOC50" href="make_5.html#SEC57">5.1 Command Syntax</a>
145
<li><a name="TOC51" href="make_5.html#SEC58">5.1.1 Splitting Command Lines</a></li>
146
<li><a name="TOC52" href="make_5.html#SEC59">5.1.2 Using Variables in Commands</a></li>
148
<li><a name="TOC53" href="make_5.html#SEC60">5.2 Command Echoing</a></li>
149
<li><a name="TOC54" href="make_5.html#SEC61">5.3 Command Execution</a>
151
<li><a name="TOC55" href="make_5.html#SEC62">5.3.1 Choosing the Shell</a></li>
153
<li><a name="TOC56" href="make_5.html#SEC64">5.4 Parallel Execution</a></li>
154
<li><a name="TOC57" href="make_5.html#SEC65">5.5 Errors in Commands</a></li>
155
<li><a name="TOC58" href="make_5.html#SEC66">5.6 Interrupting or Killing <code>make</code></a></li>
156
<li><a name="TOC59" href="make_5.html#SEC67">5.7 Recursive Use of <code>make</code></a>
158
<li><a name="TOC60" href="make_5.html#SEC68">5.7.1 How the <code>MAKE</code> Variable Works</a></li>
159
<li><a name="TOC61" href="make_5.html#SEC69">5.7.2 Communicating Variables to a Sub-<code>make</code></a></li>
160
<li><a name="TOC62" href="make_5.html#SEC70">5.7.3 Communicating Options to a Sub-<code>make</code></a></li>
161
<li><a name="TOC63" href="make_5.html#SEC71">5.7.4 The ‘<samp>--print-directory</samp>’ Option</a></li>
163
<li><a name="TOC64" href="make_5.html#SEC72">5.8 Defining Canned Command Sequences</a></li>
164
<li><a name="TOC65" href="make_5.html#SEC73">5.9 Using Empty Commands</a></li>
166
<li><a name="TOC66" href="make_6.html#SEC74">6. How to Use Variables</a>
168
<li><a name="TOC67" href="make_6.html#SEC75">6.1 Basics of Variable References</a></li>
169
<li><a name="TOC68" href="make_6.html#SEC76">6.2 The Two Flavors of Variables</a></li>
170
<li><a name="TOC69" href="make_6.html#SEC77">6.3 Advanced Features for Reference to Variables</a>
172
<li><a name="TOC70" href="make_6.html#SEC78">6.3.1 Substitution References</a></li>
173
<li><a name="TOC71" href="make_6.html#SEC79">6.3.2 Computed Variable Names</a></li>
175
<li><a name="TOC72" href="make_6.html#SEC80">6.4 How Variables Get Their Values</a></li>
176
<li><a name="TOC73" href="make_6.html#SEC81">6.5 Setting Variables</a></li>
177
<li><a name="TOC74" href="make_6.html#SEC82">6.6 Appending More Text to Variables</a></li>
178
<li><a name="TOC75" href="make_6.html#SEC83">6.7 The <code>override</code> Directive</a></li>
179
<li><a name="TOC76" href="make_6.html#SEC84">6.8 Defining Variables Verbatim</a></li>
180
<li><a name="TOC77" href="make_6.html#SEC85">6.9 Variables from the Environment</a></li>
181
<li><a name="TOC78" href="make_6.html#SEC86">6.10 Target-specific Variable Values</a></li>
182
<li><a name="TOC79" href="make_6.html#SEC87">6.11 Pattern-specific Variable Values</a></li>
184
<li><a name="TOC80" href="make_7.html#SEC88">7. Conditional Parts of Makefiles</a>
186
<li><a name="TOC81" href="make_7.html#SEC89">7.1 Example of a Conditional</a></li>
187
<li><a name="TOC82" href="make_7.html#SEC90">7.2 Syntax of Conditionals</a></li>
188
<li><a name="TOC83" href="make_7.html#SEC91">7.3 Conditionals that Test Flags</a></li>
190
<li><a name="TOC84" href="make_8.html#SEC92">8. Functions for Transforming Text</a>
192
<li><a name="TOC85" href="make_8.html#SEC93">8.1 Function Call Syntax</a></li>
193
<li><a name="TOC86" href="make_8.html#SEC94">8.2 Functions for String Substitution and Analysis</a></li>
194
<li><a name="TOC87" href="make_8.html#SEC95">8.3 Functions for File Names</a></li>
195
<li><a name="TOC88" href="make_8.html#SEC96">8.4 Functions for Conditionals</a></li>
196
<li><a name="TOC89" href="make_8.html#SEC97">8.5 The <code>foreach</code> Function</a></li>
197
<li><a name="TOC90" href="make_8.html#SEC98">8.6 The <code>call</code> Function</a></li>
198
<li><a name="TOC91" href="make_8.html#SEC99">8.7 The <code>value</code> Function</a></li>
199
<li><a name="TOC92" href="make_8.html#SEC100">8.8 The <code>eval</code> Function</a></li>
200
<li><a name="TOC93" href="make_8.html#SEC101">8.9 The <code>origin</code> Function</a></li>
201
<li><a name="TOC94" href="make_8.html#SEC102">8.10 The <code>flavor</code> Function</a></li>
202
<li><a name="TOC95" href="make_8.html#SEC103">8.11 The <code>shell</code> Function</a></li>
203
<li><a name="TOC96" href="make_8.html#SEC104">8.12 Functions That Control Make</a></li>
205
<li><a name="TOC97" href="make_9.html#SEC105">9. How to Run <code>make</code></a>
207
<li><a name="TOC98" href="make_9.html#SEC106">9.1 Arguments to Specify the Makefile</a></li>
208
<li><a name="TOC99" href="make_9.html#SEC107">9.2 Arguments to Specify the Goals</a></li>
209
<li><a name="TOC100" href="make_9.html#SEC108">9.3 Instead of Executing the Commands</a></li>
210
<li><a name="TOC101" href="make_9.html#SEC109">9.4 Avoiding Recompilation of Some Files</a></li>
211
<li><a name="TOC102" href="make_9.html#SEC110">9.5 Overriding Variables</a></li>
212
<li><a name="TOC103" href="make_9.html#SEC111">9.6 Testing the Compilation of a Program</a></li>
213
<li><a name="TOC104" href="make_9.html#SEC112">9.7 Summary of Options</a></li>
215
<li><a name="TOC105" href="make_10.html#SEC113">10. Using Implicit Rules</a>
217
<li><a name="TOC106" href="make_10.html#SEC114">10.1 Using Implicit Rules</a></li>
218
<li><a name="TOC107" href="make_10.html#SEC115">10.2 Catalogue of Implicit Rules</a></li>
219
<li><a name="TOC108" href="make_10.html#SEC116">10.3 Variables Used by Implicit Rules</a></li>
220
<li><a name="TOC109" href="make_10.html#SEC117">10.4 Chains of Implicit Rules</a></li>
221
<li><a name="TOC110" href="make_10.html#SEC118">10.5 Defining and Redefining Pattern Rules</a>
223
<li><a name="TOC111" href="make_10.html#SEC119">10.5.1 Introduction to Pattern Rules</a></li>
224
<li><a name="TOC112" href="make_10.html#SEC120">10.5.2 Pattern Rule Examples</a></li>
225
<li><a name="TOC113" href="make_10.html#SEC121">10.5.3 Automatic Variables</a></li>
226
<li><a name="TOC114" href="make_10.html#SEC122">10.5.4 How Patterns Match</a></li>
227
<li><a name="TOC115" href="make_10.html#SEC123">10.5.5 Match-Anything Pattern Rules</a></li>
228
<li><a name="TOC116" href="make_10.html#SEC124">10.5.6 Canceling Implicit Rules</a></li>
230
<li><a name="TOC117" href="make_10.html#SEC125">10.6 Defining Last-Resort Default Rules</a></li>
231
<li><a name="TOC118" href="make_10.html#SEC126">10.7 Old-Fashioned Suffix Rules</a></li>
232
<li><a name="TOC119" href="make_10.html#SEC127">10.8 Implicit Rule Search Algorithm</a></li>
234
<li><a name="TOC120" href="make_11.html#SEC128">11. Using <code>make</code> to Update Archive Files</a>
236
<li><a name="TOC121" href="make_11.html#SEC129">11.1 Archive Members as Targets</a></li>
237
<li><a name="TOC122" href="make_11.html#SEC130">11.2 Implicit Rule for Archive Member Targets</a>
239
<li><a name="TOC123" href="make_11.html#SEC131">11.2.1 Updating Archive Symbol Directories</a></li>
241
<li><a name="TOC124" href="make_11.html#SEC132">11.3 Dangers When Using Archives</a></li>
242
<li><a name="TOC125" href="make_11.html#SEC133">11.4 Suffix Rules for Archive Files</a></li>
244
<li><a name="TOC126" href="make_12.html#SEC134">12. Features of GNU <code>make</code></a></li>
245
<li><a name="TOC127" href="make_13.html#SEC135">13. Incompatibilities and Missing Features</a></li>
246
<li><a name="TOC128" href="make_14.html#SEC136">14. Makefile Conventions</a>
248
<li><a name="TOC129" href="make_14.html#SEC137">14.1 General Conventions for Makefiles</a></li>
249
<li><a name="TOC130" href="make_14.html#SEC138">14.2 Utilities in Makefiles</a></li>
250
<li><a name="TOC131" href="make_14.html#SEC139">14.3 Variables for Specifying Commands</a></li>
251
<li><a name="TOC132" href="make_14.html#SEC140">14.4 Variables for Installation Directories</a></li>
252
<li><a name="TOC133" href="make_14.html#SEC141">14.5 Standard Targets for Users</a></li>
253
<li><a name="TOC134" href="make_14.html#SEC142">14.6 Install Command Categories</a></li>
255
<li><a name="TOC135" href="make_15.html#SEC143">A. Quick Reference</a></li>
256
<li><a name="TOC136" href="make_16.html#SEC144">B. Errors Generated by Make</a></li>
257
<li><a name="TOC137" href="make_17.html#SEC145">C. Complex Makefile Example</a></li>
258
<li><a name="TOC138" href="make_18.html#SEC146">D. GNU Free Documentation License</a>
260
<li><a name="TOC139" href="make_18.html#SEC147">D.1 ADDENDUM: How to use this License for your documents</a></li>
262
<li><a name="TOC140" href="make_19.html#SEC148">Index of Concepts</a></li>
263
<li><a name="TOC141" href="make_26.html#SEC149">Index of Functions, Variables, & Directives</a></li>
267
<table cellpadding="1" cellspacing="1" border="0">
268
<tr><td valign="middle" align="left">[<a href="make.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
269
<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
270
<td valign="middle" align="left">[<a href="make_19.html#SEC148" title="Index">Index</a>]</td>
271
<td valign="middle" align="left">[<a href="make_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
275
This document was generated by <em>Manoj Srivastava</em> on <em>August, 17 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.