2016-08-03 96 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行爲。

相關問題