我正在处理由其他开发人员编写的复杂make文件,此makefile还包含其他makefile。
我在makefile的开头放了一个哑的规则,然后调用了makefile而没有指定一个目标,期望第一个规则只执行(这会回应一些东西),但我发现其他规则被调用了。
我想知道是否有其他规则可能会在第一条规则之前得到评估(可能是因为包含或二次扩展或其他规则)?
答案 0 :(得分:0)
make see的第一个(非模式非前导点)规则是默认目标(默认情况下)。无论是来自Makefile
还是某些包含的makefile都无关紧要。
此外,makefile可以通过设置.DEFAULT_GOAL
special variable来覆盖它。
这在GNU make手册的How make
Processes a Makefile部分进行了讨论。
默认情况下,
make
以第一个目标开头(而不是名称以“。”开头的目标)。这称为默认目标。 (目标是最终要更新的目标。您可以使用命令行(请参阅Arguments to Specify the Goals)或使用.DEFAULT_GOAL
特殊变量覆盖此行为(请参阅{{ 3}}