如何强制gnumake文件中的错误

时间:2009-12-08 03:32:00

标签: makefile gnu-make

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

有人能举例说明这样做吗?

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

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

感谢。

3 个答案:

答案 0 :(得分:67)

来自manual

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

这会导致make致命错误:

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

答案 1 :(得分:8)

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

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成为顶级目标的先决条件。

答案 2 :(得分:5)

条件也需要引起注意。

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