【问题标题】:Determine if Makefile is executed with gmake确定是否使用 gmake 执行 Makefile
【发布时间】:2012-08-02 09:57:34
【问题描述】:

假设在 FreeBSD 上,应用程序需要使用 GNU make (gmake) 编译,而不是标准系统 make。如果 Makefile 不是用 gmake 编译的,是否有任何指令可以让 Makefile 停止执行并打印错误?

【问题讨论】:

    标签: makefile gnu-make freebsd


    【解决方案1】:

    Call your makefile GNUmakefile。 GNU Make 会找到它,但其他品牌不会。

    对于大多数 makefile,不建议使用检查的名字 GNUmakefile。如果您有一个特定于 GNU make 的 makefile,并且不会被其他版本的 make 理解,您应该使用这个名称。其他 make 程序寻找 makefile 和 Makefile,但不是 GNUmakefile。

    【讨论】:

    • 有趣的方法。假设用户想要在 FreeBSD 上编译一个应用程序。他们输入“make”,但没有任何反应(make 表示没有要制作的目标,因为它找不到 makefile)。用户不知道它需要用 gmake 编译,直到他们检查文件夹并知道 GNUmake 的含义。可能不是什么大问题,但我希望有一个对用户更友好的解决方案。
    • @Amiramix:那么 also 有一个 makefile 和一条规则怎么样:all: ; @echo use GNUMake
    • @Beta:规则形式如何:$(MAKECMDGOALS): ; @echo Use GNU Make
    • @Beta:我最终会超过你。你在顶端的日子屈指可数。
    • 我猜它们的编号一定大于一:.PHONY: $(MAKECMDGOALS)
    【解决方案2】:

    这是对 Jack Kelly 答案的补充。

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

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

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

    【讨论】:

    • 这是一个不错的解决方案。
    猜你喜欢
    • 2012-01-19
    • 2020-06-05
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多