makefile学习笔记(一)

make -f filename.txt  target

make target (找到当前目录或子目录的makefile文件,执行target目标)

make (执行makefile第一行的目标)

 

makefile的依赖定义:

target:prerequisites ; command 1

‘\t’command2

 

prerequisites可以省略,多个依赖条件使用空格分开

 

;  \为续航符,链接多少command指令为一行,因为每一行的command都会开启单独进程执行

 

依赖规则

当目标对应的文件不存在时,执行对应命令

当依赖在时间上比目标更加新时,执行对应命令

当依赖关系连续发生时,对比依赖链上的每一个目标

 

command命令前面加@符号,表示命令无回显

 

小技巧:

工程开发中可以讲最终可执行文件名和all同时作为makefile中第一条规则的目标

 

伪目标:

通过.PHONY关键字声明一个为目标

伪目标不对应任何实际的文件

不管伪目标的依赖是否更新,命令总是执行

 

伪目标先声明后使用

例如:

.PHONY : clean

##注释##

clean :

rm *.o *.out

 

绕开.PHONY关键字定义伪目标

原理:如果一个规则没有命令或者依赖,并且他的目标不是一个存在的文件名,在执行此规则时,目标总是会被认为是最新的,所以通过以下方法可以绕开.PHONY关键字定义伪目标

clean : FORCE

rm *.o *.out

FORCE :

 

makefile的赋值方式

:= 简单赋值

= 递归赋值

?= 条件赋值 (判断当前变量是否第一次赋值,是则赋值)

+= 追加赋值(字符串拼接)

 

预定义变量的使用

自动变量

$@ 当前规则中触发命令被执行的目标

$^ 当前规则中的所有依赖

$< 当前规则中的第一个依赖

注意: $符号对于makefile有特殊含义,输出时需要加一个$进行转义

  $@符号对于bash shell有特殊含义,输出时需要加上\进行转义

 

 

  

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值