Makefile的目标

作者: stringlife | 来源:发表于2018-08-10 14:21 被阅读7次

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

    相关文章

      网友评论

        本文标题:Makefile的目标

        本文链接:https://www.haomeiwen.com/subject/cvbkbftx.html