web-dev-qa-db-ja.com

gnumakeファイルでエラーを強制する方法

ツールのバージョンが間違っているというmakefileの状態を検出し、アイテムが正しいバージョンではないことを示すエラーメッセージでmakeを強制的に失敗させたいと考えています。

誰でもこれを行う例を挙げることができますか?

私は次を試しましたが、それは正しい構文ではありません:

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

ありがとう。

56
WilliamKF

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.
69
LiraNuna

$(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を最上位レベルのターゲットの前提条件にします。

8
Chris Dodd

条件文にも注意が必要です。

 ifeq($(Shell svnversion --version | sed s/[^ 0-9 \。] *://)、1.4)
 $(エラーBad svnversion v1.4、インストールしてくださいv1.6)
 endif 
5
Beta