【问题标题】:Makefile:1: *** missing separator. (I use tab, not spaces)Makefile:1: *** 缺少分隔符。 (我使用制表符,而不是空格)
【发布时间】:2021-04-15 07:48:56
【问题描述】:

我知道这个问题已经被问过很多次了,但我还是无法解决我的错误。

我正在用这个内容做一个 Makefile:

if [ -d "$HOME/.local/share/nvim/site/autoload/" ]; then
        mkdir -p $HOME/.local/share/nvim/site/autoload/ 
fi

当我运行它时,我得到了

Makefile:1: *** missing separator.  Stop.

为了检查脚本是否有空格而不是制表符,我在提示符下输入

cat -t Makefile

我明白了

if [ -d "$HOME/.local/share/nvim/site/autoload/" ]; then
^Imkdir -p $HOME/.local/share/nvim/site/autoload/
fi

有什么问题?

【问题讨论】:

  • 这似乎是一个 shell 脚本,而不是 Makefile。参见例如GNU make documentation 获取有关 Makefile 应该是什么样子的信息。
  • 谢谢,我会阅读一些文档以便更好地理解。

标签: linux bash makefile ubuntu-20.04


【解决方案1】:

GNU make 不是bash,它有自己的语法。你的代码是这样的:

ifeq ($(wildcard $(HOME)/.local/share/nvim/site/autoload/),)
  MKDIR_OUTPUT:=$(shell mkdir -p $(HOME)/.local/share/nvim/site/autoload/)
endif

这里不需要标签,因为它不是食谱。

【讨论】:

  • 谢谢!我正在学习 bash,这是我的第一个 Makefile。我错了使用相同的语法。现在我发现我不需要 Makefile 来达到我的目的。
猜你喜欢
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
相关资源
最近更新 更多