Makefile知识要点

PHONY

clean:

         rm*.o

.PHONY: clean

PHONY显式地告诉“make”clean的是伪目标,那么每次makeclean必然会执行rm *.o。否则存在一种可能性,假如当前路径下有一个名为clean的文件,因为clean这个目标又没有依赖的文件,那这个clean文件永远被认为是最新的,导致rm指令永远不会执行。

FORCE

FORCE: ;

.PHONY: FORCE

定义了一个空的目标,没有做任何事情

all: target1 target2 target3 FORCE

         xxxx

在最后加一个FORCE,起的作用就是make all时永远判断为需要更新,即xxxx指令永远被执行。

参数

-s silent,不打印执行的命令

-r no built-in rules,禁止隐含规则,如目标的自动推导,如a.o自动依赖于a.c。

-R no built-in variables, 禁止隐含的变量,如自动使用系统变量$CFLAGS。

-w print-directory 输出运行makefile前和后的信息(进入XX目录,退出xx目录)

Override

变量的赋值方式有两种,一种是命令行方式

make OPTION=1

另外一种就是在makefile内部的赋值:

OPTION=1

相同的变量,如果命令行make指定了,那么makefile内部的赋值就不起作用。除非使用override:

override OPTION=1 

目标是%::

all:

         echo‘I am making all target’

%::

         echo‘means unspecified target will come here’

make指定的目标在makefile的其他地方没有被指定时(比如这里执行make xx),会执行%::下的指令。即%::相当于V语言代码中switch的default目标。当然,当不指定target即只敲make时,这里只会执行第一个目标all下的指令。

特殊变量

$@--目标文件

$^--所有的依赖文件

$<--第一个依赖文件

%是makefile的通配符,相当于shell中的*

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值