第六章:Makefile 中的变量 -------------------------------------------------------------------------------- 在Makefile 中,变量就是一个名字(像是C 语言中的宏),代表一个文本字符串(变量的值)
在Makefile 的目标、依赖、命令中引用一个变量的地方,变量会被它的值所取代(与 C 语言中宏引用的方式相同,因此其他版本的make 也把变量称之为“宏”)
在Makefile 中变量的特征有以下几点: 1
Makefile 中变量和函数的展开(除规则的命令行以外),是在make 读取 makefile 文件时进行的,这里的变量包括了使用“=”定义和使用指示符“define”定义的
变量可以用来代表一个文件名列表、编译选项列表、程序运行的选项参数列表、搜索源文件的目录列表、编译输出的目录列表和所有我们能够想到的事物
变量名是不包括“:”、“#”、“=”、前置空白和尾空白的任何字符串
需要注意的是,尽管在GNU make 中没有对变量的命名有其它的限制,但定义一个包含除字母、数字和下划线以外的变量的做法也是不可取的,因为除字母、数字和下划线以外的其它字符可能会在以后的make 版本中被赋予特殊含义,并且这样命名的变量对于一些 shell 来说不能作为环境变量使用
变量名是大小写敏感的
变量“foo”、“Foo”和“FOO”指的是三个不同的变量
Makefile传统做法是变量名是全采用大写的方式
推荐的做法是在对于内部定义定义的一般变量(例如:目标文件列表objects)使用小写方式,而对于一些参数列表(例如:编译选项 CFLAGS)采用大写方式,这并不是要求的
但需要强调一点:对于一个工程,所有Makefile 中的变量命名应保持一种风格,否则会显得你是一个