Ubuntu下使用vim编写makefile文件出现错误 "makefile: *** missing separator. stop ."的解决办法

在makefile 文件中使用命令前必须的使用tab键,不能使用多个空格替代,但是我使用了tab键还是出现错误“makefile: *** missing separator. stop .”后来cd ~/.vimrc 发现我是设置的是softtabstop=4而不是tabstop=4,所以不能被识别导致错误的产生。

在vim中有shiftwidth、tabstop、softtabstop


shiftwidth这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观,和下面的参数最好一致。同时它也是符号移位长度的制定者。


tabstop定义tab所等同的空格长度,一般来说最好设置成8,因为如果是其它值的话,可能引起文件在打印之类的场合中看起来很别扭。除非你设置了expandtab模式,也就是把tabs转换成空格,这样的话就不会一起混淆,不过毕竟制表符为8是最常用最普遍的设置,所以一般还是不要改。


softtabstop如果我们希望改变程序中的缩进怎么办?shiftwidthtabstop不一样的话,你会发现程序比较难看的。这时候,softtabstop就起作用了。可以从vim的说明中看到,一旦设置了softtabstop的值时,你按下tab键,插入的是空格和tab制表符的混合,具体如何混合取决于你设定的softtabstop,举个例子,如果设定softtabstop=8, 那么按下tab键,插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符;如果softtabstop=12,那么插入的就是一个制表符加上4个空格;如果softtabstop=4呢?那么一开始,插入的就是4个空格,此时一旦你再按下一次tab,这次的四个空格就会和上次的四个空格组合起来变成一个制表符。换句话说,softtabstop是“逢8空格进1制表符”,前提是你tabstop=8


附上简易的makefile文件的示例

# this is a makefile of c++ project string
# the standerd c++ compiler in the ubuntu linux is g++
# written by damon on March 11th, 2014
TARGET =.
CC =g++
CFLAGS =-g
CFLAGC =-c

MAINC =main.cpp
STRING =String.cpp
OBJ =String.o

INCLUDE =-I$(TARGET)
EXEC =$(TARGET)/main

all: $(EXEC)
$(EXEC): $(OBJ) $(MAINC)
	$(CC) $(CFLAGS) $(OBJ) S(MAIN) $(INCLUDE) -o $@
	rm -f $(OBJ)
	@rm -f $(OBJ)
	@echo "<<<<<< $@ is created successfunlly! >>>>>>"
$(OBJ): $(STRING)
	$(CC) $(CFLAGC) $(STRING) -o $@
clean:
	rm -f $(EXEC)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值