Makefile的目标

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的处理方法,这大概就是伪目标的由来原因吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容