如何在 gnumake 文件中强制出现错误

发布于 2024-08-14 07:00:16 字数 276 浏览 5 评论 0原文

我想检测 makefile 中工具版本错误的情况,并强制 make 失败,并显示一条错误消息,指示该项目不是正确的版本。

谁能举一个这样做的例子吗?

我尝试了以下命令,但它不是正确的语法:

ifeq "$(shell svnversion --version | sed s/[^0-9\.]*://)" "1.4"
$error("Bad svnversion v1.4, please install v1.6")
endif

谢谢。

I want to detect a condition in my makefile where a tool is the wrong version and force the make to fail with an error message indicating the item is not the right version.

Can anyone give an example of doing this?

I tried the following but it is not the right syntax:

ifeq "$(shell svnversion --version | sed s/[^0-9\.]*://)" "1.4"
$error("Bad svnversion v1.4, please install v1.6")
endif

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半步萧音过轻尘 2024-08-21 07:00:16

手册

$(error Bad svn version v1.4, please install v1.6)

这将导致make 出现致命错误:

$ make
Makefile:2: *** Bad svn version v1.4, please install v1.6.  Stop.

From the manual:

$(error Bad svn version v1.4, please install v1.6)

This will result make to a fatal error:

$ make
Makefile:2: *** Bad svn version v1.4, please install v1.6.  Stop.
枕花眠 2024-08-21 07:00:16

虽然 $(error... 有效,但有时使用失败的规则更容易

test_svn_version:
        @if [ $(svn --version --quiet | \
                perl -ne '@a=split(/\./); \
                          print $a[0]*10000 + $a[1]*100 + $a[2]') \
              -lt 10600 ]; \
        then \
            echo >&2 "Svn version $(svn --version --quiet) too old; upgrade to v1.6";
            false; \
        fi

然后您将 test_svn_version 作为顶级目标的先决条件。

While $(error... works, sometimes its easier to use a rule that fails

test_svn_version:
        @if [ $(svn --version --quiet | \
                perl -ne '@a=split(/\./); \
                          print $a[0]*10000 + $a[1]*100 + $a[2]') \
              -lt 10600 ]; \
        then \
            echo >&2 "Svn version $(svn --version --quiet) too old; upgrade to v1.6";
            false; \
        fi

Then you make test_svn_version a prerequisite of your top level target.

小瓶盖 2024-08-21 07:00:16

条件句也需要注意。

ifeq ($(shell svnversion --version | sed s/[^0-9\.]*://), 1.4) 
    $(error Bad svnversion v1.4, please install v1.6)
endif 

The conditional needs some attention too.

ifeq ($(shell svnversion --version | sed s/[^0-9\.]*://), 1.4) 
    $(error Bad svnversion v1.4, please install v1.6)
endif 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文