Makefile:1:***缺少分隔符.停止

Joã*_*nda 21 c makefile

我在c上创建一个项目,当我创建我的Makefile并尝试运行它时,它给了我这个错误:

Makefile:1: *** missing separator.  Stop.
Run Code Online (Sandbox Code Playgroud)

我的makefile代码是:

CC=gcc
OBJ=./objetos
INC=./include
FON=./aqsFonte
BIB=./bibliotecas
OPBIB=-lBiblioteca
ProjetoFinal: libFinal.a 
    $(CP) $(FON)/ProjetoFinal.c -I$(INC) -L$(BIB) $(OPBIB) -o ProjetoFinal

Bibliotecas.a: Caminho.o Libs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o
    ar -q $(BIB)/libFinal.a Caminho.o ibs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o

Caminho.o:
    $(CP) $(FON)/Caminho.c -o Caminho.o
Libs_Defines.o :
    $(CP) $(FON)/Libs_Defines.c -o Libs_Defines.o
Matrizes.o:
    $(CP) $(FON)/Matrizes.c -o Matrizes.o
Proc_Imagens.o: 
    $(CP) $(FON)/Proc_Imagens.c -o Proc_Imagens.o
Vetores.o:
    $(CP) $(FON)/Vetores.c -o Vetores.o
Run Code Online (Sandbox Code Playgroud)

此外,我猜它都是正确的标签.

Fil*_*ves 28

这是一个标签问题.某些文本编辑器可能会使用空格替换制表符,请确保使用不会弄乱它的正确文本编辑器.在vi或任何其他基本编辑器中打开makefile,然后重写该makefile.

请注意,在每个目标规则之后,必须在行的开头放置一个单独的选项卡.在该选项卡之后的所有内容都会传递给shell(可以有更多选项卡,空格和任何您想要的内容,但请记住,行的开头必须有一个选项卡).


Lee*_*eor 11

你可以尝试跑 -

perl -pi -e 's/^  */\t/' Makefile
Run Code Online (Sandbox Code Playgroud)

(保存备份后当然)


小智 8

这也可能是由于 .PHONY 和目标之间缺少冒号所致

.PHONY all 
all:
<tab><do this>
Run Code Online (Sandbox Code Playgroud)

抛出错误,而下面工作正常

.PHONY: all 
all:
<tab><do this>
Run Code Online (Sandbox Code Playgroud)