Makefile程序员

Makefile的目标

2018-08-10  本文已影响7人  stringlife

Makefile的目标

Makefile为什么需要伪目标

这里的目标是指makefile文件中的目标,不是Makefile的历史使命
Makefile中的目标到底是什么呢,make命令是怎么样理解目标呢

1.make将makefile的目标认为是一个文件;
2.make解释器比较目标文件和依赖文件的新旧关系,决定是否执行命令

为里理解Makeifle的目标来做以下测试

编写一个Makefile
在同一个目录下新建一个test文件
Makefile文件内容如下:

test:
    echo test   

此时执行make会出现什么情况,一定会有人会认为会执行echo test语句
实际情况是下面的结果

string@asus:~/Projects/makefile$ make
make: 'test' is up to date.

为什么是上面的情况呢,别忘了在目录下新建了一个test文件,这个文件是出现这个情况的罪魁祸首,因为make将目标认为是一个文件,所以执行make的时候会去寻找该文件,如果该文件存在则不会执行相应的语句
如果删除该test文件则会按照预期的目标执行
如果一个目标不去检测,一定要执行该怎么办,Makefile提供了一个很好的办法,在大多数的Makefile中也有这个办法的例子,那就是Makefile的伪目标的,将一个目标设计伪目标的时候不管如何都会去执行目标下的命令
在该例子中添加如下语句则会按照预期的结果执行

.PHONY : test

是不是很熟悉,这个就是在大多数Makefile中clean的处理方法,这大概就是伪目标的由来原因吧

上一篇下一篇

猜你喜欢

热点阅读