Makefile语法规则
目标文件:依赖文件
变量定义
命令行
...
目标文件:Makefile中必须有的文件,可以是一个也可是多个
依赖文件:目标文件所依赖的文件,可以空着,多个文件用空格分开,可以使用通配符(*.c)
变量定义:必须在定义目标文件前定义
变量的实质是字符串替换
使用变量$(变量名)
赋值方法:=普通方式,左变量右值
:=使用前面的变量不使用后面的变量
?=变量没被定义过就使用等号右边的值,定义过就什么也不做
ifeq
ifeq (bool表达式)
动作
endif
+= 给变量追加值
define,定义一系列动作,可以换行
define 变量名
动作
endef
override 改变make时的参数值
override 变量名=值
override 变量名:=值
override 变量名+=值
命令行:独立开始用Tab键开头
与依赖文件在同一行用分号;隔开,需要换行用\作为换行符
让上一条命令的结果应用在下一条命令,需要使用分号分割两条命令
伪类:固定用法
.PHONEY:cleanall cleanobj cleandiff
cleanall:cleanobj cleandiff
rm program
cleanobj :
rm *.o
cleandiff:
rm *.diff
常见问题
遗漏分隔符,命令行没用tab开头
commands commence before first target ,命令行在目标文件前出现