makefile基础命令学习随笔

makefile学习随笔

所有命令要以tab键开头

一、显示命令
@字符在命令行之前,那么,这条命令在被执行的时候将不被显示出来
make -n
make --just-print 只显示命令但不执行命令
make -s
make --slient 全面禁止命令的显示

二、命令执行
后一条命令在前一条命令的基础上执行时,需下载同一行,用“;"分隔

三、命令出错
局部方法:
在makefile的命令行前添加”-“ 意为不管命令是否出错都认为是成功
全局方法:
给make添加-i或–ignore-errors参数,整个文件忽略所有命令错误
给make添加-k或–keep-going参数,某个命令出错,但会继续执行其他命令

四、嵌套执行make

五、定义命令包
define xxx

enddef

变量

变量在声明时需要赋予初值,在使用时,需要在变量名前加上 , 变 量 名 最 好 使 用 ( ) 或 括 起 来 如 要 使 用 ,变量名最好使用()或{}括起来 如要使用 使使本身,则使用$$表示
变量是可以使用后面定义的变量的 用在函数中时,效率低、
使用":="操作符,前面的变量不能使用后面的定义的变量

foo?=bar
如果foo没有被定义过,那么foo的值就是bar,如果foo先前被定义过,那么这条语句将什么也不做
( v a r : a = b ) 或 (var:a=b)或 (var:a=b){var:a=b}
把变量var中以a字串结尾的a替换成b字串 结尾的意思时空格或者结束符
foo:=a.o b.o c.o
bar:=$(foo:%.o=%.c)
静态模式,依赖于被替换的字串中有相同的模式,模式中必须包含一个"%"字符。

使用+=给变量追加值
如果该变量前面没有定义过,+=就变成=,否则就继承前一次的赋值操作符

扫描二维码关注公众号,回复: 12618020 查看本文章

override

ifeq\else\endif

函数:
参数间以逗号“,“分隔,而函数名和参数之间以空格分隔。函数调用以”$“开头,以圆括号或花括号把函数名和参数括起来。

$(subst ,, ) 字符串替换函数
$(patsubst ,, ) 模式字符串替换函数
$(strip ) 去空格函数(开头和结尾)
$(findstring ,) 查找字符串函数
$(filter <pattern…>, ) 过滤函数
$(filter-out <pattern…>, ) 反过滤函数
$(sort ) 排序函数(升序)
$(word , ) 取单词函数(取出第n个word)
$(wordlist ,, ) 取单词串函数(取出从m到n的单词串)
$(words ) 单词个数统计函数
$(firstword ) 首单词函数

文件名操作函数:

$(dir <names…>) 取目录函数
$(notdir <names…>) 取文件函数
$(suffix <names…>) 取后缀函数
$(basename <names…>) 取前缀函数
$(addsuffix <names…>) 加后缀函数
$(addprefix <names…>) 加前缀函数
$(join ,) 连接函数

$(foreach ,, ) list的遍历赋值给var,text中执行包含var的函数
$(if ,,) else可已没有,若为假,返回空
$(call ,,,…) param依次替代expression中的变量
$(origin ) 输出变量所在位置

猜你喜欢

转载自blog.csdn.net/Fighting_gua_biu/article/details/112258210