Voici mon makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
Lorsque j'essaie de make clean
ou make make
, j'obtiens cette erreur:
:makefile:4: *** missing separator. Stop.
Comment puis-je le réparer?
Réponses:
makefile a une relation très stupide avec les onglets, toutes les actions de chaque règle sont identifiées par des onglets. Et non, 4 espaces ne font pas un onglet, seul un onglet fait un onglet.
pour vérifier j'utilise la commande
cat -e -t -v makefile_name
Il montre que la présence d'onglets avec
^I
et de fins de ligne avec les$
deux est essentielle pour garantir que les dépendances se terminent correctement et que les onglets marquent l'action pour les règles afin qu'elles soient facilement identifiables à l'utilitaire make.Exemple:
la source
makefile
didacticiel, et cela n'a pas fonctionné. Seulement après avoir supprimé des espaces et mis à laTab
place a fonctionné!-v
L'option decat
commande est redondante ici parce que-e
moyens-vE
et-t
moyens-vT
.Sur VS Code, cliquez simplement sur "Espace: 4" dans le coin droit et changez-le en onglet lors de la modification de votre Makefile.
la source
Vous devez toujours écrire une commande après un Tabespace et non un espace blanc.
Cela s'applique à la
gcc
ligne (ligne # 4) dans votre cas. Vous devez insérer un onglet avantgcc
.Remplacez également
\rm -fr ll
parrm -fr ll
. Insérez également des onglets avant cette commande.la source
La solution
PyCharm
serait d'installer unMakefile support
plugin:Preferences
(cmd + ,
)Plugins
->Marketplace
Makefile support
, installez et redémarrez l'IDE.Cela devrait résoudre le problème et fournir une syntaxe pour un makefile.
la source
C'est une assez vieille question mais je voudrais quand même dire une option de plus en utilisant l'
vi/vim
éditeur pour visualiser les onglets. Si vous avezvi/vim
installé, ouvrez unMakefile
(par exemplevim Makefile
) et entrez:set list
. Cela montrera le nombre d'onglets insérés comme ci-dessous,la source
Utilisation
.editorconfig
de la correction automatique des onglets:la source
Le point clé était "HARD TAB" 1. Vérifiez si vous avez utilisé TAB au lieu d'espaces 2. Vérifiez votre .vimrc pour "set tabstop = X"
la source
Si l'un d'entre vous utilise un produit Intellij, la solution est la suivante:
Other File Types
.Use tab character
et faites attention,Tab size
et lesIndent
valeurs doivent être 4.la source
Si vous utilisez mcedit pour modifier le makefile. vous devez voir la marque suivante.
la source
En effet, tab est remplacé par des espaces. Pour désactiver cette fonction, accédez à
gedit-> modifier-> préférences-> éditeur
et retirer le chèque
" remplacer l'onglet par un espace "
la source