确定是否使用gmake执行Makefile

确定是否使用gmake执行Makefile,makefile,gnu-make,freebsd,Makefile,Gnu Make,Freebsd,比如说,在FreeBSD上,应用程序需要使用GNU make(gmake)编译,而不是使用标准系统make。如果Makefile不是用gmake编译的,我是否可以向Makefile发出任何指令来停止执行它并打印错误?。GNU Make会找到它,但其他Make不会 对于大多数makefile,不建议使用选中的第一个名称GNUmakefile。如果您有一个特定于GNU make的makefile,并且其他版本的make无法理解它,那么应该使用这个名称。其他make程序查找makefile和makef

比如说,在FreeBSD上,应用程序需要使用GNU make(gmake)编译,而不是使用标准系统make。如果Makefile不是用gmake编译的,我是否可以向Makefile发出任何指令来停止执行它并打印错误?

。GNU Make会找到它,但其他Make不会

对于大多数makefile,不建议使用选中的第一个名称GNUmakefile。如果您有一个特定于GNU make的makefile,并且其他版本的make无法理解它,那么应该使用这个名称。其他make程序查找makefile和makefile,但不查找GNUmakefile。
这是杰克·凯利答案的补充。

将Makefile重命名为GNUmakefile后,使用以下命令创建Makefile:

USEGNU=gmake $*
all:
    @$(USEGNU)
.DEFAULT:
    @$(USEGNU)

这将在每次运行make时为您调用gmake。

有趣的方法。假设用户希望在FreeBSD上编译应用程序。他们键入“make”,但什么也没发生(make说没有要生成的目标,因为它找不到makefile)。在用户检查文件夹并了解GNUmake的含义之前,他们不知道是否需要使用gmake编译它。可能不是什么大问题,但我希望有一个更为用户友好的解决方案。@Amiramix:那么让
makefile
也有一个规则:
all:@echo使用GNUMake
@Beta:那么以下形式的规则如何:
$(MAKECMDGOALS):@echo使用GNU Make
?@Beta:我最终会超过你的。你在高层的日子屈指可数了。我想他们的日子一定比一天多:
。虚假:$(MAKECMDGOALS)
这是一个很好的解决方案。