Este é o meu makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
Quando tento make clean
ou make make
recebo este erro:
:makefile:4: *** missing separator. Stop.
Como posso corrigir isso?
Respostas:
makefile tem uma relação muito estúpida com guias, todas as ações de todas as regras são identificadas por guias. E não, 4 espaços não formam uma guia, apenas uma guia cria uma guia.
para verificar eu uso o comando
cat -e -t -v makefile_name
Ele mostra a presença de guias
^I
e terminações de linha com$
ambas são vitais para garantir que as dependências terminem corretamente e as guias marcam a ação das regras para que sejam facilmente identificáveis pelo utilitário make.Exemplo:
fonte
makefile
tutorial e não funcionou. Somente após excluir espaços e colocar emTab
vez disso funcionou!-v
A opção decat
comando é redundante aqui porque-e
significa-vE
e-t
significa-vT
.No VS Code, clique no "Espaço: 4" no canto inferior direito e mude para tab ao editar o Makefile.
fonte
Você deve sempre escrever o comando após um Tabespaço em branco e não.
Isso se aplica à
gcc
linha (linha 4) no seu caso. Você precisa inserir a guia antesgcc
.Substitua também
\rm -fr ll
porrm -fr ll
. Insira abas antes deste comando também.fonte
A solução
PyCharm
seria instalar umMakefile support
plugin:Preferences
(cmd + ,
)Plugins
->Marketplace
Makefile support
, instale e reinicie o IDE.Isso deve corrigir o problema e fornecer uma sintaxe para um makefile.
fonte
É uma pergunta bastante antiga, mas ainda assim gostaria de dizer mais uma opção usando o
vi/vim
editor para visualizar as guias. Se vocêvi/vim
instalou, abra umMakefile
(por exemplovim Makefile
) e digite:set list
. Isso mostrará o número de guias inseridas como abaixo,fonte
Usando
.editorconfig
para corrigir as guias automaticamente:fonte
O ponto principal foi "HARD TAB" 1. Verifique se você usou TAB em vez de espaço em branco 2. Verifique no .vimrc se "set tabstop = X"
fonte
Se algum de vocês estiver usando um produto da Intellij, a solução para isso é a seguinte:
Other File Types
.Use tab character
e tenha cuidado,Tab size
e osIndent
valores devem ser 4.fonte
Se você estiver usando o mcedit para edição do makefile. você tem que ver a seguinte marca.
fonte
Isso ocorre porque a guia é substituída por espaços. Para desativar esse recurso, vá para
gedit-> editar-> preferências-> editor
e remova a verificação de
" substituir tabulação por espaço "
fonte