$(CURDIR)/Makefile Makefile: ; 的作用

发布时间 2023-11-12 18:55:59作者: zxddesk

$(CURDIR)/Makefile Makefile: ;

 

在这个Makefile中,$(CURDIR)/Makefile Makefile: ; 是一个特殊的语法,它被用于取消Makefile默认的隐含规则。这个语句的作用是阻止Make命令在当前目录下自动查找和使用默认的隐含规则来构建目标。
通常情况下,如果没有指定如何构建某个目标,Make命令会根据文件的扩展名和默认规则来决定如何构建。但是,通过使用 $(CURDIR)/Makefile Makefile: ;,你可以明确地阻止Make命令使用默认规则,从而完全控制目标的构建过程。
简而言之,这个语句告诉Make命令不要使用默认规则来构建当前目录下的Makefile文件。

一般来说,Makefile: 这个目标是用来制定如何创建或更新名为 "Makefile" 的目标的规则。当在命令行运行 "make" 命令或者 "make Makefile" 命令时,这个目标就会被构建。
然而在 "`$(CURDIR)/Makefile Makefile:` ;"这条规则中,"Makefile:" 后面并没有跟随任何命令,因此这实际上是一个空规则,用途在于取消 Make 的隐含规则,而没有指向具体的构建方法。
特别地,如果对一个项目使用 "make" 命令,而该项目的 Makefile 中包含了类似你给出的规则,那么 "make" 命令就不会尝试寻找并运行任何默认的或者隐含的规则去构建名为 "Makefile" 的目标。
这样,就避免了可能存在的,由默认或隐含规则产生的意外构建行为。

说白了,直接在Makefile文件所在的目录运行命令make时,如果命中了 make Makefile,就会调用一条空命令什么都不做.