2016-08-03 68 views
1

我写了下面的Makefile:无法调试生成文件。 Makefile:9:***缺少分隔符。停止

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot' 
IDIR =../../../include 
CFLAGS=-I$(IDIR) 

LDIR =../../../../../../../../.debug/lib.out/public/ 
LIBS= -lmylib1 -lmylib2 -lmylib3 

myexec: my_code.c 
    $(CC) $(CFLAGS) -o myexec my_code.c 

它抛出错误:

Makefile:9: *** missing separator. Stop 

我看了相关的问题here。它说选项卡可能有问题。我仔细检查了代码。我正在使用一个选项卡,而不是空格。然而,当我运行

cat -e -t -v Makefile 

我得到以下,暗示有$CC之前没有标签。

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'$ 
IDIR =../../../include$ 
CFLAGS=-I$(IDIR)$ 
$ 
LDIR =../../../../../../../../.debug/lib.out/public/$ 
LIBS= -lmylib1 -lmylib2 -lmylib3$ 
$ 
myexec: my_code.c$ 
    $(CC) $(CFLAGS) -o myexec my_code.c$ 

我也检查了我的.vimrc文件。我有set tabstop=4。我试图消除这一点,但它使情况变得更糟。它开始给我的错误:Makefile:9: *** missing separator (did you mean TAB instead of 8 spaces?). Stop. 这是它的外观:

syntax on 
colorscheme desert 
set nocompatible 
set number 
set backspace=indent,eol,start 
set autoindent 
set ruler 
set spell 
set title 
set et 
set mouse=v 
set history=100 
set tabstop=4 
+4

'et'选项是罪魁祸首。它是'expandtab'的简称 - 正是你不想要的。从你的'.vimrc'中移除。然后,重新输入makefile中的'$(CC)'行 –

+1

@CraigEstey:这对提交者有意义,因为他们愿意改变他们的vim配置。对于很多用户来说,大多数时候vim配置都是所需的默认行为,但偶尔会出现一些奇怪的文件。 – jxh

+1

添加'filetype plugin indent on'行使Vim加载文件类型特定的设置,从而用合理的设置覆盖您自己的通用设置。 – romainl

回答

2

也有一些是在你的vim初始化阻止Makefile文件的正确的编辑。它似乎是et,它是expandtab设置的缩写,这会使每个制表符被扩展为适当的空格字符数。 (感谢克雷格·埃斯特确认这一点)

但是,你可以告诉vim为不使用-u NONE使用init文件:

vim -u NONE Makefile 

就这样,你应该能够在编辑需要制表符。

或者,您可以添加到您的.vimrc的底部:

:autocmd FileType make set noet 

这将禁用每当编辑一个Makefile expandtab行为。

相关问题