Makefile学习记录

主要是用于自己的一个学习记录

ifeq

类比 if(a==b)

strip

去掉开头结尾的空格,将字符串中间连续的的空格合并为1个,例如是“a b c”,变为“a b c”

fliter

过滤函数,$(filter PATTERN…,TEXT)
匹配TEXT中符合PATTERN的字符,PATTERN可能有多个
返回值:TEXT中所有符合PATTERN的字符,若有多个,则用空格分隔。

换号符号

使用 \ 即可换行

call函数

我个人的理解是,call函数可以按照某种模式,来可变的创造变量。
例如下例
test = ( 1 ) (1) (1)(2)
foo = $(call test,a,b),得出来的结果foo就是"a b"。这个test中的1,2就是参数的顺序。foo中的a对应的就是第一个,也就是1,b对应的是2。这个1,2顺序是可变的

eval函数

简单的把eval函数理解为,先把后面的内容解析然后展开来,然后在make的时候再运行一次
firstword:
$(firstword NAMES…)
$(firstword foo bar)
返回值为“foo”

word-colon函数

主要作用是将字符串中的冒号替换为空格,需要注意前面空格的表示.
define word-colon
$(word ( 1 ) , (1), (1),(subst :, ( s p a c e ) , (space), (space),(2)))
endef
显然,上面这个函数相关的有三个,word,subst,space
word是用来取字符串中的第几个词

subst函数

其实就是字符替换,上例就是对字符串$(2),把冒号用空格代替
word函数:
$(word n,text)
返回text的第n个单词,n从1开始计算,如果n比text含有的单词总数大,则返回空。

if的使用

makefile中if分为在TARGET外部和TARGET内部,TARGET内部中使用的时候,是作为shell脚本使用的。
TARGET内部使用时,格式为if [ 条件 ]; then 语句1; 语句2; else 语句3; 语句4; fi
这里主要注意[ ] 这两个符号和条件之间需要空格,并且shell环境中的语句需要放在一行,如果太长,可以使用 \ 来进行换行

变量

目标变量,仅在目标文件以及相关的规则的中使用
TARGET: := variable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值