GNU make中".MAKE"目标是什么?



".MAKE"出现在gnu Makefile中,用于许多使用AutoMake的包,但在联机手册中似乎没有作为"特殊"目标进行记录。有人知道它的作用吗?

这个目标本身不做任何事情。它对我认识的make没有什么特别的意义。

然而,当项目使用GNU Automake时,它是自动生成的。Automake创建Makefile.in文件,./configure将使用该文件生成Makefile s。

它没有列在文档中的目标中:只有开发人员才会需要它,正如它在生成的Makefile.in中的定义所示:

.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am 
    ctags-recursive install-am install-strip tags-recursive

这两个变量在Makefile.in中的其他地方定义,看起来这个目标将尝试对所有可以做的事情进行完整的运行:清理源代码树、编译软件、运行自动测试、安装、卸载软件,以及一些只对开发人员有用的步骤。因此,这基本上是一个一次性的测试运行,例如,可以在连续的构建测试中使用。

这是创建automake的一个明显例子:make缺少一个非常需要的功能(即告诉它"做所有事情"的能力(,所以automake提供了它。

选择的答案不准确。.MAKE目标并不意味着任何人都要执行。对于GNU make来说,这并没有什么特别的意义,但是,例如FreeBSD中的make理解.make的递归make调用的先决条件。特别是,即使在执行make-n(干式运行调用(时,也会执行与它们相关的配方,这样您就可以看到递归make将执行哪些命令。GNU make通过引用$(make(或"+"标记来检测递归make配方。因此,它是由automake出于兼容性目的插入的。

最新更新