makefile及基础语法
makefile命令和语法 (1)定义变量:变量值的本质是一个字符串,可以是文件名列表,参数烈,目录列表等。通常对于参数列表变量,写成大写方式;对于内部一般变量写成小写形式。 同时有两种定义变量方式,一种obj:=表示直接展开式变量,该变量是在变量定义时就求值,另一种obj=, obj+=, obj?=都表示递归展开式变量,这种变量是在变量被引用时才求值。 obj=代表递归赋值,obj+=代表递归追加赋值,obj?=代表条件赋值(只有该变量在之前没有被赋值的情况下才会对他赋值) obj = main.o simple.o #创建变量 foo1 := ${aaa} #直接展开式变量,此时aaa还没定义,所以foo1值为空 foo2 = ${aaa} #递归展开式变量,在执行时才会求值,所以foo2值为hello aaa = 16 foo3 = 4 foo3 += aaa # foo3追加 foo4 ?= foo3 # foo4之前没有赋值过,所以foo4可以等于foo3 (2)几种特殊变量:这里重点是3种单字符变量 $@ # 代表当前规则中的目标target文件名 $< # 代表当前规则中的第一个依赖文件名 #^ # 代表当前规则中的所有依赖文件名 在显示这几种特殊变量时,也需要额外特殊的方式 all: first second third echo “\$$@ = $@” # 这里