编写好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就不会报错了