Makefile:1: *** 缺少分隔符。 (我使用制表符,而不是空格)

Makefile:1: *** missing separator. (I use tab, not spaces)

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

我正在制作一个包含以下内容的 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

有什么问题?

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

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

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