Syntax 带引号的复杂makefile语法
我有以下关于makefile规则的开始(感谢其他人的帮助),但它还没有完全起作用:Syntax 带引号的复杂makefile语法,syntax,makefile,quotes,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 \ e
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
条件中的单引号似乎是不匹配的
请帮助更正语法。我试过很多变体,但没有一个是正确的
谢谢
-William您缺少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
该示例在svn命令之后缺少一个管道(|),在echo之后缺少一个反斜杠。这些仅仅是示例中的输入错误,还是源代码中也缺少了这些错误?通常,只使用长行和能够处理这些错误的编辑器,而不是使用大量反斜杠,会更容易。不过,我仍然会将perl命令单独放在一行上。或者将svn版本放入Make变量,并在Make中执行更多逻辑。还有一些比较版本号的工具。您不必解析版本号并将其添加到整数中。。。虽然在这种情况下看起来很简单。