Makefile:4: *** missing separator. Stop.

编写好Makefile后,运行make,报错:

Makefile:4: *** missing separator.  Stop.

网上搜索后都是说缺少了tab,但是检查Makefile文件,其实并没有

见下面:

objs = tmp.o

tmp: $(objs)
	gcc $(objs) -o tmp

后来发现第四行开头连按两下tab就不会报错

联想到之前为了把vim里的tab改成4个空格位,在~/.vimrc使用了下面这个配置:

set shiftwidth=4
set softtabstop=4

后来才知道,这个softtabstop是把tab换成4个空格,连续两个tab又会用真正的tab替换这8格

详细解释可以参考这里: vim技巧:详解tabstop、softtabstop、expandtab三个选项的区别

总之,为了不做替换,应该用tabstop,也就是:

set shiftwidth=4
set tabstop=4

这样写Makefile时用一个tab就不会报错了

原文地址:https://www.cnblogs.com/yl-xy/p/14021630.html