读书笔记之:GNU make中文手册

lyjinger读书笔记之:GNU make中文手册

原书信息:
名称:GNU make中文手册
版本:ver-3.8
作者:
译者:徐海兵

读书笔记:
  make默认查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”

  每一个命令行必须以[Tab]字符开始,[Tab]字符告诉make此行是一个命令行。make按照命令完成相应的动作。这也是书写Makefile中容易产生,而且比较隐蔽的错误
  书写时,可以将一个较长行使用反斜线(/)来分解为多行,这样可以使我们的Makefile书写清晰、容易阅读理解。但需要注意:反斜线之后不能有空格(这也是大家最容易犯的错误,错误比较隐蔽)

  make程序会把出现在第一条规则之后的所有以[Tab]字符开始的行都作为命令行来处理
  Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)

  在Makefile中一个规则的目标如果不是“终极目标”所依赖的(或者“终极目标”的依赖文件所依赖的),那么这个规则将不会被执行
  在实际工作中大家都比较认同的方法是,使用一个变量“objects”、“OBJECTS”、“objs”、“OBJS”、“obj”或者“OBJ”来作为所有的.o文件的列表的替代

  对一个目标文件是“N.o”,倚赖文件是“N.c”的规则,完全可以省略其规则的命令行
  显式规则、隐含规则、变量定义、指示符和注释

  “include”指示符告诉make暂停读取当前的Makefile,而转去读取“include”指定的一个或者多个文件,完成以后再继续当前Makefile的读取

  TARGETS : NORMAL-PREREQUISITES | ORDER-ONLY-PREREQUISITES
  “~/bin”代表“/home/username/bin/”(当前用户宿主目录下的bin目录)
  “~john/bin”就是代表用户john的宿主目录下的bin目录

  自动化变量“$?”表示依赖文件列表中被改变过的所有文件
  自动化变量“$<”代表规则的第一个依赖,“$@”代表规则的目标

  变量定义中使用的通配符不会被通配处理,“objects = *.o”表示变量“objects”的值是字符串“*.o”
  当需要变量“objects”代表所有.o文件列表示,需要使用函数“wildcard”(objects = $(wildcar *.o))

  $(wildcard PATTERN...) 在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表

  通过变量“VPATH”可以指定依赖文件的搜索路径
  VPATH = src:../headers 为所有规则的依赖指定了两个搜索目录,“src”和“../headers”
  另一个设置文件搜索路径的方法是使用make的“vpath”关键字(全小写的)
  vpath %.h ../headers 其含义是:Makefile中出现的.h文件;如果不能在当前目录下找到,则到目录“../headers”下寻找

.PHONY: clean
clean:
    rm *.o temp

.PHONY: cleanall cleanobj cleandiff
cleanall : cleanobj cleandiff
    rm program
cleanobj :
    rm *.o
cleandiff :
    rm *.diff

  make存在一个内嵌隐含变量“RM”,它被定义为:“RM = rm –f”

Makefile的特殊目标:
.PHONY:
  目标“.PHONY”的所有的依赖被作为伪目标。伪目标时这样一个目标:当使用make命令行指定此目标时,这个目标所在规则定义的命令、无论目标文件是否存在都会被无条件执行
.SUFFIXES:
  特殊目标“SUFFIXES”的所有依赖指出了一系列在后缀规则中需要检查的后缀名(就是当前make需要处理的后缀)
.DEFAULT
  一个文件作为某个规则的依赖,但却不是另外一个规则的目标时。Make程序无法找到重建此文件的规则,此种情况时就执行“.DEFAULT”所指定的命令
.PRECIOUS
  目标“.PRECIOUS”的所有依赖文件在make过程中会被特殊处理:当命令在执行过程中被中断时,make不会删除它们。而且如果目标的依赖文件是中间过程文件,同样这些文件不会被删除。
另外,目标“.PRECIOUS”的依赖文件也可以是一个模式,例如“%.o”。这样可以保留有规则创建的中间过程文件。
.INTERMEDIATE
  目标“.INTERMEDIATE”的依赖文件在make时被作为中间过程文件对待。没有任何依赖文件的目标“.INTERMEDIATE”没有意义。
.SECONDARY
.DELETE_ON_ERROR
.IGNORE
.LOW_RESOLUTION_TIME
.SILENT
.EXPORT_ALL_VARIABLES
.NOTPARALLEL

静态模式
TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ...
    COMMANDS
  从目标模式(TAGET-PATTERN)的目标名字中抽取一部分字符串(称为“茎”)。使用“茎”替代依赖模式(PREREQ-PATTERNS)中的相应部分来产生对应目标的依赖文件
files = foo.elc bar.o lose.o
$(filter %.o,$(files)): %.o: %.c
    $(CC) -c $(CFLAGS) $< -o $@
$(filter %.elc,$(files)): %.elc: %.el
    emacs -f batch-byte-compile $<

变量赋值:
递归展开式变量 = 在引用的地方是严格的文本替换
直接展开式变量 := 以变量被定义后就是一个实际需要的文本串,其中不再包含任何变量的引用
条件赋值 ?= 只有此变量在之前没有赋值的情况下才会对这个变量进行赋值
追加变量值 +=

make的函数:
调用方式:$(FUNCTION ARGUMENTS)
文本处理函数
$(subst FROM,TO,TEXT)
  字符串替换函数—subst:把字串“TEXT”中的“FROM”字符替换为“TO”。
  $(subst ee,EE,feet on the street)

$(patsubst PATTERN,REPLACEMENT,TEXT)
  模式替换函数—patsubst:搜索“TEXT”中以空格分开的单词,将符合模式“PATTERN”替换为“REPLACEMENT”。
  $(patsubst %.c,%.o,x.c bar.c)
  $(VAR:PATTERN=REPLACEMENT)相当于:
$(patsubst PATTERN,REPLACEMENT,$(VAR))
  $(VAR:SUFFIX=REPLACEMENT) 等于:$(patsubst %SUFFIX,%REPLACEMENT,$(VAR))

$(strip STRINT)
  去空格函数—strip:去掉字串(若干单词,使用若干空字符分割)“STRINT”开头和结尾的空字符,并将其中多个连续空字符合并为一个空字符。
  STR =    a b  c
  LOSTR = $(strip $(STR))

$(findstring FIND,IN)
  查找字符串函数—findstring:搜索字串“IN”,查找“FIND”字串。
  $(findstring a,a b c)

$(filter PATTERN…,TEXT)
  过滤函数—filter:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词。
  sources := foo.c bar.c baz.s ugh.h
  foo: $(sources)
    cc $(filter %.c %.s,$(sources)) -o foo

$(filter-out PATTERN...,TEXT)
  反过滤函数—filter-out:过滤掉字串“TEXT”中所有符合模式“PATTERN”的单词,保留所有不符合此模式的单词。
  objects=main1.o foo.o main2.o bar.o
  mains=main1.o main2.o
  $(filter-out $(mains),$(objects))

$(sort LIST)
  排序函数—sort:给字串“LIST”中的单词以首字母为准进行排序(升序),并取掉重复的单词。
  $(sort foo bar lose foo)

$(word N,TEXT)
  取单词函数—word:取字串“TEXT”中第“N”个单词(“N”的值从1开始)。
  $(word 2, foo bar baz)

$(wordlist S,E,TEXT)
  取字串函数—wordlist:从字串“TEXT”中取出从“S”开始到“E”的单词串。
  $(wordlist 2, 3, foo bar baz)

$(words TEXT)
  统计单词数目函数—words:计算字串“TEXT”中单词的数目。
  $(words, foo bar)

$(firstword NAMES…)
  取首单词函数—firstword:取字串“NAMES…”中的第一个单词。
  $(firstword foo bar)

文件名处理函数
$(dir NAMES…)
  取目录函数—dir:从文件名序列“NAMES…”中取出各个文件名的目录部分。
  $(dir src/foo.c hacks)

$(notdir NAMES…)
  取文件名函数——notdir:从文件名序列“NAMES…”中取出非目录部分。
  $(notdir src/foo.c hacks)

$(suffix NAMES…)
  取后缀函数—suffix:从文件名序列“NAMES…”中取出各个文件名的后缀。
  $(suffix src/foo.c src-1.0/bar.c hacks)

$(basename NAMES…)
  取前缀函数—basename:从文件名序列“NAMES…”中取出各个文件名的前缀部分(点号之后的部分)。
  $(basename src/foo.c src-1.0/bar.c /home/jack/.font.cache-1 hacks)

$(addsuffix SUFFIX,NAMES…)
  加后缀函数—addsuffix:为“NAMES…”中的每一个文件名添加后缀“SUFFIX”
  $(addsuffix .c,foo bar)

$(addprefix PREFIX,NAMES…)
  加前缀函数—addprefix:为“NAMES…”中的每一个文件名添加前缀“PREFIX”
  $(addprefix src/,foo bar)

$(join LIST1,LIST2)
  单词连接函数——join:将字串“LIST1”和字串“LIST2”各单词进行对应连接。就是将“LIST2”中的第一个单词追加“LIST1”第一个单词字后合并为一个单词;将“LIST2”中的第二个单词追加到“LIST1”的第一个单词之后并合并为一个单词,……依次列推。
  $(join a b c , .c .o)

$(wildcard PATTERN)
  获取匹配模式文件名函数—wildcard:列出当前目录下所有符合模式“PATTERN”格式的文件名。
  $(wildcard *.c)

foreach 函数
  $(foreach VAR,LIST,TEXT)
  dirs := a b c d
  files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
等价于:
  files := $(wildcard a/* b/* c/* d/*)

if 函数
  $(if CONDITION,THEN-PART[,ELSE-PART])
  SUBDIR += $(if $(SRC_DIR) $(SRC_DIR),/home/src)
  函数的结果是:如果“SRC_DIR”变量值不为空,则将变量“SRC_DIR”指定的目录作为一个子目录;否则将目录“/home/src”作为一个子目录。

call函数
  $(call VARIABLE,PARAM,PARAM,...)
  reverse = $(2) $(1)
  foo = $(call reverse,a,b) 变量“foo”的值为“ba”
  pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
  LS := $(call pathsearch,ls) 变量“LS”的结果为“/bin/sh”

value函数
eval函数
origin函数

shell函数

自动化变量:
$@    表示规则的目标文件名
$%    当规则的目标文件是一个静态库文件时,代表静态库的一个成员名
$<    规则的第一个依赖文件名
$?    所有比目标文件更新的依赖文件列表,空格分割
$^    规则的所有依赖文件列表,使用空格分隔
$+    类似“$^”,但是它保留了依赖文件中重复出现的文件。主要用在程序链接时库的交叉引用场合
$*    在模式规则和静态模式规则中,代表“茎”    
$(@D)    表示目标文件的目录部分(不包括斜杠)
$(@F)    目标文件的完整文件名中除目录以外的部分(实际文件名)
$(*D)
$(*F)    分别代表目标“茎”中的目录部分和文件名部分
$(%D)
$(%F)    当以如“archive(member)”形式静态库为目标时,分别表示库文件成员“member”名中的目录部分和文件名部分。它仅对这种形式的规则目标有效
$(<D)
$(<F)    分别表示规则中第一个依赖文件的目录部分和文件名部分
$(^D)
$(^F)    分别表示所有依赖文件的目录部分和文件部分(不存在同一文件)
$(+D)
$(+F)    分别表示所有依赖文件的目录部分和文件部分(可存在重复文件)
$(?D)
$(?F)    分别表示被更新的依赖文件的目录部分和文件名部分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GUN make 中文手册 译者:徐海兵 2004-09-11 3.5.6 库文件和搜索目录 .................................................................................................... 36 3.6 Makefile伪目标.............................................................................................................. 37 3.7 强制目标(没有命令或依赖的规则) ............................................................................. 40 3.8 空目标文件..................................................................................................................... 41 3.9 Makefile的特殊目标....................................................................................................... 41 3.10 多目标............................................................................................................................ 44 3.11 多规则目标..................................................................................................................... 44 3.12 静态模式 ........................................................................................................................ 45 3.12.1 静态模式规则的语法 ....................................................................................... 45 3.12.2 静态模式和隐含规则 ....................................................................................... 47 3.13 双冒号规则..................................................................................................................... 48 3.14 自动产生依赖 ................................................................................................................. 49 第四章:规则的命令 .................................................................................................................. 51 4 规则中书写命令 ................................................................................................................... 51 4.1 命令回显 ........................................................................................................................ 51 4.2 命令的执行..................................................................................................................... 52 4.3 并发执行命令 ................................................................................................................. 53 4.4 命令执行的错误.............................................................................................................. 54 4.5 中断make的执行............................................................................................................ 56 4.6 make的递归执行............................................................................................................ 56 4.6.1 变量MAKE ............................................................................................................... 57 4.6.2 变量和递归 ............................................................................................................... 58 4.6.3 命令行选项和递归 .................................................................................................... 61 4.6.4 -w选项...................................................................................................................... 63 4.7 定义命令包..................................................................................................................... 63 4.8 空命令............................................................................................................................ 65 第五章:Makefile中的变量......................................................................................................... 65 5 使用变量 .............................................................................................................................. 65 5.1 变量的引用..................................................................................................................... 66 5.2 两种变量定义(赋值)................................................................................................... 68 5.2.1 递归展开式变量........................................................................................................ 68 5.2.2 直接展开式变量........................................................................................................ 69 5.2.3 如何定义一个空格 .................................................................................................... 70 5.2.4 “?=”操作符 ............................................................................................................. 71 5.3 变量的高级用法.............................................................................................................. 71 5.3.1 变量的替换引用........................................................................................................ 72 5.3.2 变量的套嵌引用........................................................................................................ 72 5.4 变量取值 ........................................................................................................................ 76 5.5 如何设置变量 ................................................................................................................. 76 5.6 追加变量值..................................................................................................................... 77 5.7 override 指示符 ............................................................................................................. 79 5.8 多行定义 ........................................................................................................................ 80 5.9 系统环境变量 ................................................................................................................. 81 5.10 目标指定变量 ................................................................................................................. 83 5.11 模式指定变量 ................................................................................................................. 84 第六章:Makefile的条件执行 ..................................................................................................... 85 6 Makefile的条件判断 ............................................................................................................. 85 6.1 一个例子 ........................................................................................................................ 85 6.2 条件判断的基本语法 ...................................................................................................... 86 2004年9月11日 3GUN make 中文手册 6.3 标记测试的条件语句 ...................................................................................................... 89 第七章:make的内嵌函数.......................................................................................................... 89 7 make的函数 ......................................................................................................................... 89 7.1 函数的调用语法.............................................................................................................. 90 7.2 文本处理函数 ................................................................................................................. 91 7.2.1 $(subst FROM,TO,TEXT) ....................................................................................... 91 7.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT) ..................................................... 91 7.2.3 $(strip STRINT)....................................................................................................... 92 7.2.4 $(findstring FIND,IN) .............................................................................................. 92 7.2.5 $(filter PATTERN...,TEXT) ..................................................................................... 93 7.2.6 $(filter-out PATTERN...,TEXT) ............................................................................... 93 7.2.7 $(sort LIST) ............................................................................................................. 94 7.2.8 $(word N,TEXT) ...................................................................................................... 94 7.2.9 $(wordlist S,E,TEXT).............................................................................................. 94 7.2.10 $(words TEXT) .............................................................................................. 94 7.2.11 $(firstword NAMES...) .................................................................................. 95 7.3 文件名处理函数.............................................................................................................. 95 7.3.1 $(dir NAMES...) ...................................................................................................... 95 7.3.2 $(notdir NAMES...)................................................................................................. 96 7.3.3 $(suffix NAMES...) ................................................................................................. 96 7.3.4 $(basename NAMES...) ......................................................................................... 96 7.3.5 $(addsuffix SUFFIX,NAMES...) ............................................................................. 97 7.3.6 $(addprefix PREFIX,NAMES...) ............................................................................. 97 7.3.7 $(join LIST1,LIST2)................................................................................................. 98 7.3.8 $(wildcard PATTERN) ............................................................................................ 98 7.4 foreach 函数................................................................................................................. 98 7.5 if 函数 ......................................................................................................................... 100 7.6 call函数 ....................................................................................................................... 100 7.7 value函数 .................................................................................................................... 102 7.8 eval函数 ...................................................................................................................... 103 7.9 origin函数 ................................................................................................................... 104 7.10 shell函数 ..................................................................................................................... 106 7.11 make的控制函数.......................................................................................................... 106 7.11.1 $(error TEXT...) ........................................................................................... 107 7.11.2 $(warning TEXT...)...................................................................................... 107 第八章:执行make .................................................................................................................. 108 8 执行make .......................................................................................................................... 108 8.1 指定makefile文件 ........................................................................................................ 108 8.2 指定终极目标 ............................................................................................................... 109 8.3 替代命令的执行............................................................................................................ 111 8.4 防止特定文件重建 ........................................................................................................ 112 8.5 替换变量定义 ............................................................................................................... 113 8.6 使用make进行编译测试............................................................................................... 114 8.7 make的命令行选项 ...................................................................................................... 115 第九章:make的隐含规则........................................................................................................ 119 9 使用隐含规则 ..................................................................................................................... 119 9.1 隐含规则的使用............................................................................................................ 119 9.2 make的隐含规则一览 .................................................................................................. 121 9.3 隐含变量 ...................................................................................................................... 124 9.3.1 代表命令的变量...................................................................................................... 124 9.3.2 命令参数的变量...................................................................................................... 125 9.4 make隐含规则链.......................................................................................................... 126 2004年9月11日 4GUN make 中文手册 9.5 模式规则 ...................................................................................................................... 128 9.5.1 模式规则介绍 ......................................................................................................... 128 9.5.2 模式规则示例 ......................................................................................................... 129 9.5.3 自动化变量 ............................................................................................................. 130 9.5.4 模式的匹配 ............................................................................................................. 133 9.5.5 万用规则 ................................................................................................................ 133 9.5.6 重建内嵌隐含规则 .................................................................................................. 134 9.6 缺省规则 ...................................................................................................................... 135 9.7 后缀规则 ...................................................................................................................... 135 9.8 隐含规则搜索算法 ........................................................................................................ 137 第十章:使用make更新静态库文件 ......................................................................................... 138 10 更新静态库文件............................................................................................................ 138 10.1 库成员作为目标............................................................................................................ 138 ARCHIVE(MEMBER) .............................................................................................................. 138 10.2 静态库的更新 ............................................................................................................... 139 10.2.1 更新静态库的符号索引表 .............................................................................. 140 10.3 make静态库的注意事项............................................................................................... 141 10.4 静态库的后缀规则 ........................................................................................................ 141 第十一章 : GNU make的特点............................................................................................... 142 11 GNU make的一些特点 ................................................................................................. 142 11.1 源自System v的特点 ................................................................................................... 142 11.2 源自其他版本的特点 .................................................................................................... 143 11.3 GNU make自身的特点 ................................................................................................. 143 第十二章 和其它版本的兼容 .................................................................................................... 144 12 不兼容性 ...................................................................................................................... 144 第十三章 Makefile的约定 ........................................................................................................ 146 13 书写约定 ...................................................................................................................... 146 13.1 基本的约定................................................................................................................... 146 13.2 规则命令行的约定 ........................................................................................................ 147 13.3 代表命令变量 ............................................................................................................... 149 13.4 安装目录变量 ............................................................................................................... 150 13.5 Makefile的标准目标名 ................................................................................................. 154 13.6 安装命令分类 ............................................................................................................... 159 第十四章 make的常见错误信息............................................................................................... 161 14 make产生的错误信息 .......................................................................................................... 161 附录1:关键字索引................................................................................................................. 163 GNU make可识别的指示符:.............................................................................................. 163 GNU make函数: ............................................................................................................... 164 GNU make的自动化变量..................................................................................................... 165 GNU make环境变量 ............................................................................................................ 166 后序 ......................................................................................................................................... 166
【推荐】GNU make中文手册,详细介绍了makefile的用法和规则等。目录如下:<br>第一章:概述<br>1.1 概述<br>1.2 准备知识<br>第二章:GNU make 介绍<br>2.1 Makefile简介<br>2.2 Makefile规则介绍<br>2.3 简单的示例<br>2.4 make如何工作<br>2.5 指定变量<br>2.6 自动推导规则<br>2.7 另类风格的makefile<br>2.8 清除工作目录过程文件<br>第三章:Makefile 总述<br>3.1 Makefile的内容<br>3.2 makefile文件的命名<br>3.3 包含其它makefile文件<br>3.4 变量 MAKEFILES<br>3.5 变量 MAKEFILE_LIST<br>3.6 其他特殊变量<br>3.7 makefile文件的重建<br>3.8 重载另外一个makefile<br>3.9 make如何解析makefile文件<br>3.9.1 变量取值<br>3.9.2 条件语句<br>3.9.3 规则的定义<br>3.10 总结<br>第四章:Makefile的规则<br>4.1 一个例子<br>4.2 规则语法<br>4.3 依赖的类型<br>4.4 文件名使用通配符<br>4.4.1 统配符使用举例<br>4.4.2 通配符存在的缺陷<br>4.4.3 函数wildcard<br>4.5 目录搜寻<br>4.5.1 一般搜索(变量VPATH)<br>4.5.2 选择性搜索(关键字vpath)<br>4.5.3 目录搜索的机制<br>4.5.4 命令行和搜索目录<br>4.5.5 隐含规则和搜索目录<br>4.5.6 库文件和搜索目录<br>4.6 Makefile伪目标<br>4.7 强制目标(没有命令或依赖的规则)<br>4.8 空目标文件<br>4.9 Makefile的特殊目标<br>4.10 多目标<br>4.11 多规则目标<br>4.12 静态模式<br>4.12.1 静态模式规则的语法<br>4.12.2 静态模式和隐含规则<br>4.13 双冒号规则<br>4.14 自动产生依赖<br>第五章:规则的命令<br>5.1 命令回显<br>5.2 命令的执行<br>5.3 并发执行命令<br>5.4 命令执行的错误<br>5.5 中断make的执行<br>5.6 make的递归执行<br>5.6.1 变量MAKE<br>5.6.2 变量和递归<br>5.6.3 命令行选项和递归<br>5.6.4 -w选项<br>5.7 定义命令包<br>5.8 空命令<br>第六章:Makefile中的变量<br>6.1 变量的引用<br>6.2 两种变量定义(赋值 )<br>6.2.1 递归展开式变量<br>6.2.2 直接展开式变量<br>6.2.3 如何定义一个空格<br>6.2.4 “?=”操作符<br>6.3 变量的高级用法<br>6.3.1 变量的替换引用<br>6.3.2 变量的套嵌引用<br>6.4 变量取值<br>6.5 如何设置变量<br>6.6 追加变量值<br>6.7 override 指示符<br>6.8 多行定义<br>6.9 系统环境变量<br>6.10 目标指定变量<br>6.11 模式指定变量<br>第七章:Makefile的条件执行<br>7.1 一个例子<br>7.2 条件判断的基本语法<br>7.2.1 关键字“ifeq”<br>7.2.2 关键字“ifneq”<br>7.2.3 关键字“ifdef” <br>7.2.4 关键字“ifndef”<br>7.3 标记测试的条件语句<br>第八章:make的内嵌函数<br>8.1 函数的调用语法<br>8.2 文本处理函数<br>8.2.1 $(subst FROM,TO,TEXT)<br>8.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT)<br>8.2.3 $(strip STRINT)<br>8.2.4 $(findstring FIND,IN)<br>8.2.5 $(filter PATTERN…,TEXT)<br>8.2.6 $(filter-out PATTERN...,TEXT)<br>8.2.7 $(sort LIST)<br>8.2.8 $(word N,TEXT)<br>8.2.9 $(wordlist S,E,TEXT)<br>8.2.10 $(words TEXT)<br>8.2.11 $(firstword NAMES…)<br>8.3 文件名处理函数<br>8.3.1 $(dir NAMES…)<br>8.3.2 $(notdir NAMES…)<br>8.3.3 $(suffix NAMES…)<br>8.3.4 $(basename NAMES…)<br>8.3.5 $(addsuffix SUFFIX,NAMES…)<br>8.3.6 $(addprefix PREFIX,NAMES…)<br>8.3.7 $(join LIST1,LIST2)<br>8.3.8 $(wildcard PATTERN)<br>8.4 foreach 函数<br>8.5 if 函数<br>8.6 call函数<br>8.7 value函数<br>8.8 eval函数<br>8.9 origin函数<br>8.10 shell函数<br>8.11 make的控制函数<br>8.11.1 $(error TEXT…)<br>8.11.2 $(warning TEXT…)<br>第九章:执行make<br>9.1 指定makefile文件<br>9.2 指定终极目标<br>9.3 替代命令的执行<br>9.4 防止特定文件重建<br>9.5 替换变量定义<br>9.6 使用make进行编译测试<br>9.7 make的命令行选项<br>第十章:make的隐含规则<br>10.1 隐含规则的使用<br>10.2 make的隐含规则一览<br>10.3 隐含变量<br>10.3.1 代表命令的变量<br>10.3.2 命令参数的变量<br>10.4 make隐含规则链<br>10.5 模式规则<br>10.5.1 模式规则介绍<br>10.5.2 模式规则示例<br>10.5.3 自动化变量<br>10.5.4 模式的匹配<br>10.5.5 万用规则<br>10.5.6 重建内嵌隐含规则<br>10.6 缺省规则<br>10.7 后缀规则<br>10.8 隐含规则搜索算法<br>第十一章:使用make更新静态库文件<br>11.1 库成员作为目标<br>11.2 静态库的更新<br>11.2.1 更新静态库的符号索引表<br>11.3 make静态库的注意事项<br>11.4 静态库的后缀规则<br>第十二章 : GNU make的特点<br>12.1 源自System v的特点<br>12.2 源自其他版本的特点<br>12.3 GNU make自身的特点<br>第十三章 和其它版本的兼容<br>第十四章 Makefile的约定<br>14.1 基本的约定<br>14.2 规则命令行的约定<br>14.3 代表命令变量<br>14.4 安装目录变量<br>14.5 Makefile的标准目标名<br>14.6 安装命令分类<br>第十五章 make的常见错误信息<br> <br>附录:关键字索引<br>1. GNU make可识别的指示 符<br>2. GNU make函数<br>3. GNU make的自动化变量<br>4. GNU make环境变量<br>后序<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值