目录

Table of Contents


1 Overview of make . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 How to Read This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Problems and Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 An Introduction to Make?les . . . . . . . . . . . . . . . 3
2.1 What a Rule Looks Like . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 A Simple Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 How make Processes a Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Variables Make Make?les Simpler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Letting make Deduce the Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 Another Style of Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7 Rules for Cleaning the Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Writing Make?les . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1 What Make?les Contain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 What Name to Give Your Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Including Other Make?les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 The Variable MAKEFILES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5 The Variable MAKEFILE_LIST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.6 Other Special Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.7 How Make?les Are Remade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.8 Overriding Part of Another Make?le . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.9 How make Reads a Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.10 Secondary Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Writing Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1 Rule Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Types of Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Using Wildcard Characters in File Names . . . . . . . . . . . . . . . . . . . . 24
4.3.1 Wildcard Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.2 Pitfalls of Using Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.3 The Function wildcard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4 Searching Directories for Prerequisites . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.1 VPATH: Search Path for All Prerequisites. . . . . . . . . . . . . . . . . 27
4.4.2 The vpath Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.3 How Directory Searches are Performed . . . . . . . . . . . . . . . . . . 28
4.4.4 Writing Shell Commands with Directory Search . . . . . . . . . . 29
4.4.5 Directory Search and Implicit Rules . . . . . . . . . . . . . . . . . . . . . 29
4.4.6 Directory Search for Link Libraries . . . . . . . . . . . . . . . . . . . . . . 30
4.5 Phony Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.6 Rules without Commands or Prerequisites. . . . . . . . . . . . . . . . . . . . 33
4.7 Empty Target Files to Record Events . . . . . . . . . . . . . . . . . . . . . . . . 33
 

iii
 

iv
 

 

4.8 Special Built-in Target Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.9 Multiple Targets in a Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.10 Multiple Rules for One Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.11 Static Pattern Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.11.1 Syntax of Static Pattern Rules . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.11.2 Static Pattern Rules versus Implicit Rules . . . . . . . . . . . . . . 39
4.12 Double-Colon Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.13 Generating Prerequisites Automatically . . . . . . . . . . . . . . . . . . . . . 40
 

GNU make
 

5 Writing the Commands in Rules . . . . . . . . . . . 43
5.1 Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.1 Splitting Command Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.2 Using Variables in Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Command Echoing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 Command Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.1 Choosing the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4 Parallel Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Errors in Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.6 Interrupting or Killing make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.7 Recursive Use of make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7.1 How the MAKE Variable Works . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7.2 Communicating Variables to a Sub-make . . . . . . . . . . . . . . . . . 51
5.7.3 Communicating Options to a Sub-make . . . . . . . . . . . . . . . . . . 53
5.7.4 The ‘--print-directory’ Option . . . . . . . . . . . . . . . . . . . . . . . 54
5.8 De?ning Canned Command Sequences . . . . . . . . . . . . . . . . . . . . . . . 55
5.9 Using Empty Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6 How to Use Variables . . . . . . . . . . . . . . . . . . . . . 57
6.1 Basics of Variable References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.2 The Two Flavors of Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.3 Advanced Features for Reference to Variables . . . . . . . . . . . . . . . . . 60
6.3.1 Substitution References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.3.2 Computed Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4 How Variables Get Their Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5 Setting Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.6 Appending More Text to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.7 The override Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.8 De?ning Variables Verbatim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.9 Variables from the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.10 Target-speci?c Variable Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.11 Pattern-speci?c Variable Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

7 Conditional Parts of Make?les . . . . . . . . . . . . . 71
7.1 Example of a Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.2 Syntax of Conditionals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3 Conditionals that Test Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
 
 

 

8 Functions for Transforming Text . . . . . . . . . . . 77
8.1 Function Call Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Functions for String Substitution and Analysis . . . . . . . . . . . . . . . 78
8.3 Functions for File Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.4 Functions for Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.5 The foreach Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.6 The call Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.7 The value Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.8 The eval Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.9 The origin Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.10 The flavor Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.11 The shell Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.12 Functions That Control Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

9 How to Run make . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1 Arguments to Specify the Make?le . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.2 Arguments to Specify the Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.3 Instead of Executing the Commands . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.4 Avoiding Recompilation of Some Files . . . . . . . . . . . . . . . . . . . . . . . 94
9.5 Overriding Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.6 Testing the Compilation of a Program . . . . . . . . . . . . . . . . . . . . . . . 95
9.7 Summary of Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

10 Using Implicit Rules . . . . . . . . . . . . . . . . . . . . 101
10.1 Using Implicit Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
10.2 Catalogue of Implicit Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.3 Variables Used by Implicit Rules . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.4 Chains of Implicit Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.5 De?ning and Rede?ning Pattern Rules . . . . . . . . . . . . . . . . . . . . . 108
10.5.1 Introduction to Pattern Rules . . . . . . . . . . . . . . . . . . . . . . . . 109
10.5.2 Pattern Rule Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.5.3 Automatic Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.5.4 How Patterns Match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.5.5 Match-Anything Pattern Rules . . . . . . . . . . . . . . . . . . . . . . . 113
10.5.6 Canceling Implicit Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.6 De?ning Last-Resort Default Rules . . . . . . . . . . . . . . . . . . . . . . . . 114
10.7 Old-Fashioned Su?x Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.8 Implicit Rule Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

11 Using make to Update Archive Files . . . . . . 119
11.1 Archive Members as Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.2 Implicit Rule for Archive Member Targets . . . . . . . . . . . . . . . . . . 119
11.2.1 Updating Archive Symbol Directories . . . . . . . . . . . . . . . . . 120
11.3 Dangers When Using Archives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
11.4 Su?x Rules for Archive Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

12 Features of GNU make . . . . . . . . . . . . . . . . . . 123
 

v
 

vi

13 Incompatibilities and Missing Features . . . 127

14 Make?le Conventions . . . . . . . . . . . . . . . . . . . 129
14.1 General Conventions for Make?les . . . . . . . . . . . . . . . . . . . . . . . . . 129
14.2 Utilities in Make?les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
14.3 Variables for Specifying Commands . . . . . . . . . . . . . . . . . . . . . . . . 131
14.4 Variables for Installation Directories . . . . . . . . . . . . . . . . . . . . . . . 132
14.5 Standard Targets for Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
14.6 Install Command Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

Appendix A Quick Reference . . . . . . . . . . . . . . 143

Appendix B Errors Generated by Make . . . . 149

Appendix C Complex Make?le Example . . . . 153

Appendix D GNU Free Documentation License
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
D.1 ADDENDUM: How to use this License for your documents . . 165

Index of Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Index of Functions, Variables, & Directives . . . 175
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值