概述
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)
静态模式,依赖于被替换的字串中有相同的模式,模式中必须包含一个"%"字符。
使用+=给变量追加值
如果该变量前面没有定义过,+=就变成=,否则就继承前一次的赋值操作符
override
ifeqelseendif
函数:
参数间以逗号“,“分隔,而函数名和参数之间以空格分隔。函数调用以”$“开头,以圆括号或花括号把函数名和参数括起来。
$(subst ,,
$(patsubst ,,
$(strip ) 去空格函数(开头和结尾)
$(findstring ,) 查找字符串函数
$(filter <pattern…>,
$(filter-out <pattern…>,
$(sort ) 排序函数(升序)
$(word ,
$(wordlist ,,
$(words
$(firstword
文件名操作函数:
$(dir <names…>) 取目录函数
$(notdir <names…>) 取文件函数
$(suffix <names…>) 取后缀函数
$(basename <names…>) 取前缀函数
$(addsuffix <names…>) 加后缀函数
$(addprefix <names…>) 加前缀函数
$(join ,) 连接函数
$(foreach ,,
$(if ,,) else可已没有,若为假,返回空
$(call ,,,…) param依次替代expression中的变量
$(origin ) 输出变量所在位置
最后
以上就是优雅金毛为你收集整理的makefile基础命令学习随笔的全部内容,希望文章能够帮你解决makefile基础命令学习随笔所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复