2014-05-20 116 views

回答

4

这个目标本身并没有做任何事情。它对我所知的make没有特别的意义。

但是,它是在项目使用GNU Automake时自动生成的。 Automake创建Makefile.in文件,which ./configure will use to generate Makefiles

它不中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提供了它。

+0

感谢 - 也许我应该更明确 - 在使用AutoMake工具(./configure,Makefile.in等)的软件包中,它似乎经常出现在.PHONY目标(已记录)旁边。要选择具体示例,请参阅wireshark-1.10.6 Makefile。我在多个依靠自动配置和AutoMake的开源项目中见过它。 – Kevin

+0

啊哈!我只是在GNU make 4.0源代码中通过grep for .MAKE来证实这一点。它只发生在'automake'命令生成的文件('Makefile.in')和随后生成的文件('Makefile')中。修复我的答案... – reinierpost

+0

完美 - 谢谢! – Kevin