".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出于兼容性目的插入的。