【发布时间】:2019-09-15 16:37:32
【问题描述】:
我正在尝试在 makefile 中练习 if 语句,但它一直说文件过早结束。 代码:
test_rule:
if [ yes ]
echo "if works"
endif
输出:
make test_rule
/bin/sh: -c: line 1: syntax error : premature end of file
make: *** [Makefile:13: test_rule] Error 1
我尝试在网上使用很多代码(例如将 [] 替换为 () 或在 echo 前添加 @),但没有任何效果。
【问题讨论】:
-
配方行必须以制表符开头,但您使用了 3 个空格。
-
Make 是少数几个标签和空格之间的区别真正重要的程序之一。
make的创建者 Stu Feldman 承认这是一个错误,但在意识到这一点时,已经有太多用户冒着改变它的风险。在其他地方见Tabs and Makefiles。 -
感谢您的回答。我注意到了,但我认为这不是问题(复制粘贴标签只是为了确保)
-
绝对和标签无关。错误消息会完全不同:你会得到一个 make 语法错误而不是 shell 语法错误。让我们奖励像 RJ9 这样真正提供完整、有用的问题(包括错误消息)的人,仔细阅读它们并使用这些信息来确保我们给出适当的答案......!这里的问题是缺少反斜杠作为 G.M.指出。