语言: 日本語 | Español | Français | Português | 中文 | English
上一章 | 下一章 | 目录 | 英文原版(gnu.org)

附录A 快速参考

本附录汇总了GNU的make能够识别的指令(directive)、文本处理函数和特殊变量。 其他汇总请参阅内置的特殊目标名内置规则目录选项汇总各节。

首先是GNU的make能够识别的指令一览:

define variable
define variable =
define variable :=
define variable ::=
define variable :::=
define variable +=
define variable ?=
endef

定义跨多行的变量。
请参阅定义多行变量一节。

undefine variable

取消变量的定义。
请参阅取消变量的定义一节。

ifdef variable
ifndef variable
ifeq (a,b)
ifeq "a" "b"
ifeq 'a' 'b'
ifneq (a,b)
ifneq "a" "b"
ifneq 'a' 'b'
else
endif

根据条件评估makefile的一部分。
请参阅Makefile的条件分支一节。

include file
-include file
sinclude file

读入另一个makefile。
请参阅读入其他Makefile一节。

override variable-assignment

定义变量。即使之前的定义是在命令行上指定的,也会被覆盖。
请参阅override指令一节。

export

指示make默认将所有变量导出到子进程。
请参阅向子 make 传递变量一节。

export variable
export variable-assignment
unexport variable

指示make是否将某个特定变量导出到子进程。
请参阅向子 make 传递变量一节。

private variable-assignment

使该变量赋值不被前置条件 (prerequisite) 继承。
请参阅抑制继承一节。

vpath pattern path

为匹配‘%’模式的文件指定搜索路径。
请参阅vpath指令一节。

vpath pattern

删除之前为pattern指定的所有搜索路径。

vpath

删除之前在任意vpath指令中指定的所有搜索路径。

接下来是内置函数一览(请参阅转换文本的函数):

$(subst from,to,text)

text中的from替换为to
请参阅用于字符串替换和分析的函数一节。

$(patsubst pattern,replacement,text)

text中匹配pattern的词替换为replacement
请参阅用于字符串替换和分析的函数一节。

$(strip string)

string中去除多余的空白字符。
请参阅用于字符串替换和分析的函数一节。

$(findstring find,text)

text中查找find
请参阅用于字符串替换和分析的函数一节。

$(filter pattern…,text)

text中选出匹配任一pattern词的词。
请参阅用于字符串替换和分析的函数一节。

$(filter-out pattern…,text)

text中选出匹配任何pattern词的词。
请参阅用于字符串替换和分析的函数一节。

$(sort list)

list中的词按字典序排序,并去除重复项。
请参阅用于字符串替换和分析的函数一节。

$(word n,text)

取出text中第n个(从1开始)词。
请参阅用于字符串替换和分析的函数一节。

$(words text)

统计text中包含的词的数量。
请参阅用于字符串替换和分析的函数一节。

$(wordlist s,e,text)

返回text中从第s个到第e个词组成的列表。
请参阅用于字符串替换和分析的函数一节。

$(firstword names…)

取出names的第一个词。
请参阅用于字符串替换和分析的函数一节。

$(lastword names…)

取出names的最后一个词。
请参阅用于字符串替换和分析的函数一节。

$(dir names…)

取出每个文件名的目录部分。
请参阅处理文件名的函数一节。

$(notdir names…)

取出每个文件名中目录以外的部分。
请参阅处理文件名的函数一节。

$(suffix names…)

取出每个文件名的后缀(最后一个‘.’及其后续字符)。
请参阅处理文件名的函数一节。

$(basename names…)

取出每个文件名的基本名(去掉后缀后的名称)。
请参阅处理文件名的函数一节。

$(addsuffix suffix,names…)

names的每个词末尾追加suffix
请参阅处理文件名的函数一节。

$(addprefix prefix,names…)

names的每个词开头添加prefix
请参阅处理文件名的函数一节。

$(join list1,list2)

将两个并列列表中的词逐一连接起来。
请参阅处理文件名的函数一节。

$(wildcard pattern…)

查找匹配shell文件名模式(不是%’模式)的文件名。
请参阅wildcard函数一节。

$(realpath names…)

names中的每个文件名,展开为不包含任何...或符号链接的绝对名称。
请参阅处理文件名的函数一节。

$(abspath names…)

names中的每个文件名,展开为不包含任何...组成部分的绝对名称,但会保留符号链接。
请参阅处理文件名的函数一节。

$(error text…)

当该函数被评估时,make会显示消息text并产生一个致命错误。
请参阅控制Make的函数一节。

$(warning text…)

当该函数被评估时,make会显示消息text并产生一个警告。
请参阅控制Make的函数一节。

$(shell command)

执行一条shell命令并返回其输出。
请参阅shell函数一节。

$(origin variable)

返回一个字符串,描述make变量variable是如何被定义的。
请参阅origin函数一节。

$(flavor variable)

返回一个字符串,描述make变量variable的种类 (flavor)。
请参阅flavor函数一节。

$(let var [var ...],words,text)

var各变量绑定到words的各个词上,然后评估text
请参阅let函数一节。

$(foreach var,words,text)

var绑定到words的每个词上并评估text,然后将各结果连接起来。
请参阅foreach函数一节。

$(if condition,then-part[,else-part])

评估条件condition。若其非空,则替换为then-part的展开结果,否则替换为else-part的展开结果。
请参阅用于条件分支的函数一节。

$(or condition1[,condition2[,condition3…]])

逐一评估各条件conditionN,替换为第一个非空的展开结果。若所有展开结果都为空,则替换为空字符串。
请参阅用于条件分支的函数一节。

$(and condition1[,condition2[,condition3…]])

逐一评估各条件conditionN。只要其中任意一个的展开结果为空字符串,就替换为空字符串。若所有展开结果都为非空字符串,则替换为最后一个condition的展开结果。
请参阅用于条件分支的函数一节。

$(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]])

lhsrhs作为数值进行比较。根据左侧小于、等于还是大于右侧,分别替换为lt-parteq-partgt-part的展开结果。
请参阅用于条件分支的函数一节。

$(call var,param,…)

评估变量var。其间,将$(1)$(2)之类的引用替换为第1个、第2个……param的值。
请参阅call函数一节。

$(eval text)

评估text,然后将其结果作为makefile命令读入。展开结果为空字符串。
请参阅eval函数一节。

$(file op filename,text)

展开各参数,然后以模式op打开文件filename,并将text写入该文件。
请参阅file函数一节。

$(value var)

将变量var的内容原样作为评估结果,不对其进行任何展开。
请参阅value函数一节。

接下来是自动变量一览。 详情请参阅自动变量一节。

$@

目标的文件名。

$%

当目标是归档文件 (archive) 的成员时,该成员的名称。

$<

第一个前置条件 (prerequisite) 的名称。

$?

所有比目标更新的前置条件的名称,彼此之间以空格分隔。 对于属于归档成员的前置条件,只使用所指定的成员(请参阅make更新归档文件)。

$^
$+

所有前置条件的名称,彼此之间以空格分隔。对于属于归档成员的前置条件,只使用所指定的成员(请参阅make更新归档文件)。$^的值会去除重复的前置条件,而$+则保留重复项并保持其顺序。

$*

隐含规则匹配时的词干 (stem)(请参阅模式如何匹配)。

$(@D)
$(@F)

$@的目录部分,以及目录内的文件部分。

$(*D)
$(*F)

$*的目录部分,以及目录内的文件部分。

$(%D)
$(%F)

$%的目录部分,以及目录内的文件部分。

$(<D)
$(<F)

$<的目录部分,以及目录内的文件部分。

$(^D)
$(^F)

$^的目录部分,以及目录内的文件部分。

$(+D)
$(+F)

$+的目录部分,以及目录内的文件部分。

$(?D)
$(?F)

$?的目录部分,以及目录内的文件部分。

以下变量由GNU的make特殊使用:

MAKEFILES

每次启动make时都会读入的makefile。
请参阅变量MAKEFILES一节。

VPATH

用于查找在当前目录中找不到的文件的目录搜索路径。
请参阅针对所有前置条件的VPATH搜索路径一节。

SHELL

系统默认命令解释器的名称,通常是/bin/sh。 在makefile中设置SHELL即可更改用于执行命令 (recipe) 的shell。请参阅命令的执行。在从环境导入以及导出到环境时,SHELL变量会被特殊处理。请参阅选择Shell

MAKESHELL

仅在MS-DOS上使用,指make所用命令解释器的名称。该值优先于SHELL的值。请参阅MAKESHELL变量

MAKE

启动make时所用的名称。在命令 (recipe) 中使用该变量具有特殊含义。请参阅MAKE变量的工作方式

MAKE_VERSION

内置变量‘MAKE_VERSION’会展开为GNU的make程序的版本号。

MAKE_HOST

内置变量‘MAKE_HOST’会展开为一个字符串,表示GNU的make被构建为在其上运行的主机。

MAKELEVEL

递归(子 make)的层级深度。
请参阅向子 make 传递变量一节。

MAKEFLAGS

传给make的标志。可以在环境或makefile中设置它来设置标志。
请参阅向子 make 传递选项一节。

在命令 (recipe) 行中直接使用MAKEFLAGS绝不合适,因为其内容未必为了在shell中使用而被正确引用。请务必让递归的make能够通过环境从父进程获取这些值。

GNUMAKEFLAGS

make解析的其他标志。可以在环境或makefile中设置它来设置make的命令行标志。GNU的make从不自行设置该变量。只有当你想在符合POSIX的makefile中设置GNU的make专有标志时,才需要该变量。该变量会被GNU的make识别,而被其他make实现忽略。如果你只使用GNU的make则无需它,这种情况下直接使用MAKEFLAGS即可。 请参阅向子 make 传递选项一节。

MAKECMDGOALS

在命令行上传给make的目标。设置该变量不会对make的运行产生任何影响。
请参阅指定目标的参数一节。

CURDIR

设置为当前工作目录的绝对路径名(如果有任何-C选项,则在其全部处理完之后)。设置该变量不会对make的运行产生任何影响。
请参阅make的递归用法一节。

SUFFIXES

make读入任何makefile之前的默认后缀列表。

.LIBPATTERNS

定义make所搜索的库的命名规则及其搜索顺序。
请参阅链接库的目录搜索一节。


上一章 | 下一章 | 目录 | 英文原版(gnu.org)