“。MAKE”出现在gnu Makefile中,用于许多使用AutoMake的软件包,但在线手册中似乎没有记录为“特殊”目标。有人知道它的作用吗?
答案 0 :(得分:4)
这个目标本身并没有做任何事情。它对我所知道的make
没有特殊意义。
但是,当项目使用GNU Automake时会自动生成。
Automake会创建Makefile.in
个文件which ./configure
will use to generate Makefile
s。
它不在the targets in the documentation中列出:只有开发人员需要它,因为它在生成的Makefile.in
中的定义显示:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
ctags-recursive install-am install-strip tags-recursive
这两个变量在Makefile.in
的其他地方定义,看起来这个目标将尝试完全完成所有可以完成的工作:清理源代码树,编译软件,自动运行测试,安装,卸载它,以及一些仅对开发人员有用的步骤。所以这基本上是一次性测试运行,例如可以在连续构建测试期间使用。
这是为什么automake
被创建的一个明显例子:make
中缺少一个非常需要的功能(即能够告诉它"做所有事情"),所以automake
提供了它。
答案 1 :(得分:1)
所选答案不正确。 .MAKE目标并不意味着任何人都可以执行。这并不意味着GNU make有什么特别的地方,但是例如FreeBSD中的make可以理解.MAKE进行递归make调用的先决条件。特别是,即使执行make -n(空运行调用),也将执行与它们关联的配方,以便您可以看到递归make将执行哪些命令。 GNU make通过对$(MAKE)的引用或'+'标记来检测递归的make配方。因此,出于兼容性目的,它是由automake插入的。