72

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

任何人都可以举一个这样做的例子吗?

我尝试了以下方法,但这不是正确的语法:

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

谢谢。

4

3 回答 3

89

手册

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

这将导致make致命错误:

$ make
Makefile:2: *** Bad svn version v1.4, please install v1.6.  Stop.
于 2009-12-08T03:36:00.223 回答
13

虽然 $(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 作为顶级目标的先决条件。

于 2009-12-08T04:24:32.053 回答
6

条件也需要注意。

ifeq ($(shell svnversion --version | sed s/[^0-9\.]*://), 1.4)
    $(error Bad svnversion v1.4, please install v1.6)
万一
于 2009-12-08T03:43:32.113 回答