在Makefile中,变量类似于一个环境变量,对大小写敏感,一般使用大写字母。变量是一个名字(像C语言中的宏一样),代表一个文本字符串(变量的值)。在Makefile中定义变量的一般形式如下。
1.变量名赋值符变量值
变量名习惯上只使用字母、数字和下画线,并且不以数字开头。变量名不可以包括“:”、“#”、“=”、前置空白和尾空白的任何字符串。赋值符主要有4个:“=”、“:=”、“+=”和“?=”。变量值是一个文本字符串。另外,有些变量名只包含了一个或很少几个特殊的字符(符号),如“$<”、“$@”、“$?”和“$*”等,称它们为自动变量。
2.引用变量
在定义了一个变量之后,就可以在Makefile的很多地方使用这个变量了。变量的引用方式是“$(变量名)”或者“${变量名}”。例如,“$(fun)”或者“${fun}”就是取变量“fun”的值。可以在Makefile的任何上下文中,目标、依赖、命令、绝大多数指示符和新变量的赋值中引用一个变量。应尽量避免变量名中包含字母、数字以及下画线外的情况,因为它们可能在将来被赋予特别的定义。
Makefile中的变量分为用户自定义变量、预定义变量、自动变量及环境变量。自定义变量的值由用户自行设定,而预定义变量和自动变量为通常在Makefile中都会出现的变量,其中部分有默认值,也就是常见的设定值。当然,用户可以对其进行修改。
预定义变量包含了常见编译器、汇编器的名称及其编译选项。表5-12列出了Makefile中常见的预定义变量。
表5-12 Makefile中常见的预定义变量(www.xing528.com)
(续)
由于常见的GCC编译语句中通常包含了目标文件和依赖文件,而这些文件在Makefile文件中目标体的一行已经有所表现。因此,为了进一步简化Makefile的编写,引入了自动变量。自动变量通常可以代表编译语句中出现的目标文件和依赖文件等,并且具有本地含义(即下一语句中出现的相同变量代表的是下一语句的目标文件和依赖文件)。表5-13列出了Makefile中常见的自动变量。
表5-13 Makefile中常见的自动变量
另外,在Makefile中还可以使用环境变量。使用环境变量的方法相对比较简单,Make在启动时会自动读取系统当前已经定义了的环境变量,并且会创建与之具有相同名称和数值的变量。但是,如果用户在Makefile中定义了相同名称的变量,那么用户自定义变量将会覆盖同名的环境变量。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。