目录

来源:互联网 发布:淘宝互粉 编辑:程序博客网 时间:2024/04/27 15:27

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
 
 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米陶瓷刀钝了怎么办 橱柜的缝擦不到怎么办 悠悠球上油早了怎么办 买了没有esp的车怎么办 饥荒海难狗来了怎么办 饥荒海难拖网掉水里了怎么办 饥荒遇到了猪人怎么办 饥荒龙蝇赖在家不走怎么办 饥荒海难崩档了怎么办 gta5全是rpf文件怎么办 饥荒没有海象人营地怎么办 饥荒海滩猎犬来了怎么办 宝宝换牙门牙上长颗尖牙怎么办 肉卡在牙缝里怎么办 电脑做系统卡死怎么办 苹果6升级太卡怎么办 电脑玩不了联机饥荒怎么办 饥荒渡渡鸟死了一只怎么办 饥荒电脑联机植物生病怎么办 开车蹭到别人车怎么办 立定跳不会收腹怎么办 1岁宝宝有蛔虫怎么办 手机屏幕总是有网页跳出来怎么办 cs游戏屏幕变成正方形怎么办 大王卡被收回了怎么办 模拟人生4小人生病了怎么办 创造与魔法死后怎么办? 脚不小心扭伤了该怎么办 小鸡脚扭伤了该怎么办 跳高比赛最终成绩相等怎么办 热车1200怠速降不下来怎么办 大腿根骨髓水肿越来越疼怎么办 倒库方向打晚了怎么办 签吻芳颜祛斑液脸脱皮怎么办 3d右边工具栏消失了怎么办 3d菜单栏消失了怎么办 觉得自己性无能不敢谈对象怎么办 护士面试时被问到病人坠床怎么办 三次元仪器坏了怎么办 运动同手同脚怎么办 狗狗突然害怕不敢走路怎么办