带引号的棘手的makefile语法

时间:2009-12-08 16:16:48

标签: syntax makefile quotes

我在makefile规则上有以下开始(感谢其他人的帮助),但它还没有完成工作:

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

似乎条件中的单引号是无法比拟的。

请帮助纠正语法。我尝试了很多变种,但似乎都没有。

感谢。

- 威廉

1 个答案:

答案 0 :(得分:2)

你在svn和perl之间缺少一个管道|,并且你在回声之后错过了一个反斜杠\。这对我有用:

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