Linux中包含一个Make脚本解释器.可以读取make脚本的内容并且执行,多用于自动编译过程
基本语法
目标:条件
(TAB键)命令
目标可以使一个字符串或者一个文件 条件也可以是一个字符串或者一个条件,make解释器会去判断目标与条件文件的时间戳是否一样,不一样时就会执行命令.因此想基于文件时间戳来执行的命令都可以用make脚本.
例子:
hello:hello.c
ehco "nothing"
没有目标文件 ,会一直执行,后面的条件其实没有意义
hello.bin:hello.c
@ehco "now makefile hello.bin" --@表示不显示被执行的命令,一般情况下会显示执行的命令
gcc hello.c -o hello.bin
当hello.c被修改时才会执行
.PHONY:he --被 .PHONY申明的目标将总会执行其指定的命令,如果不声明,则仅当目标后面的条件变动后才执行,如果有条件的话也没有意义.
he:hello.c
@ehco "now make he"
gcc hello.c -o hello.bin
$(info start working) --函数调用,info是函数名 start working是参数
变量的定义和赋值:
变量不需要单独定义,可以直接赋值
:=简单展开型 读取脚本时就赋值
=递归展开型 执行脚本时赋值
?=条件赋值 当该变量还没赋值时赋值
+=附加赋值 target后面延迟 其他后面立即
条件控制
ifdef else ifndef else ifeq else ifnoeq else
宏(函数)定义
define fname
各种具体命令 $(n) 第n个参数
endef
调用
$(fname,param...) --内置函数
$(call fname,param...)--用户定义函数
$(fname) 用户定义不带参数 可以称为宏