Comme indiqué dans le manuel en ligne , la cause la plus courante de cette erreur est que les lignes sont mises en retrait avec des espaces lorsque des maketabulations sont attendues .
Quoi? :) Je suppose que vous n'aviez pas 0x20"d'espace", n'est-ce pas?
user35443
3
@ user35443 Le placement de$
smac89
8
Il s'agit d'une erreur de syntaxe dans votre Makefile. Il est assez difficile d'être plus précis que cela, sans voir le fichier lui-même, ou les parties pertinentes de celui-ci.
Pour moi, le problème était que j'avais des # ...commentaires de fin de ligne intégrés dans une define ... endefdéfinition de variable multiligne. La suppression des commentaires a fait disparaître le problème.
Je vous remercie. Je ne savais pas que les commentaires dans la definedirective étaient traités littéralement. En fait, le comportement n'est pas expliqué dans la documentation . (Pour plus de clarté: l'incorporation d'un signe numérique #dans la directive n'est pas en soi une erreur de syntaxe. Mais elle n'est tout simplement pas interprétée comme le début d'un commentaire, ce qui est certes sujet à erreur.)
ynn
3
Mon erreur était sur une ligne de déclaration de variable avec une extension multiligne. J'ai un espace de fin après le "\" qui en a fait une continuation de ligne invalide.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
Dans mon cas, la même erreur a été causée car :il manquait deux points à la fin comme dans staging.deploy:. Notez donc que cela peut être une erreur de syntaxe facile.
J'ai eu le fichier de séparateur manquant dans Makefiles généré par qmake. Je portais du code Qt sur une autre plateforme. Je n'avais ni QMAKESPEC ni MAKE. Voici le lien dont j'ai trouvé la réponse:
Donc apparemment, tout ce dont j'avais besoin était le paquet "build-essential", puis de lancer d' autoconfabord, ce qui faisait le Makefile.pre.in, puis le ./configurepuis le makequi fonctionnait parfaitement ...
Réponses:
Comme indiqué dans le manuel en ligne , la cause la plus courante de cette erreur est que les lignes sont mises en retrait avec des espaces lorsque des
make
tabulations sont attendues .Correct
où
\t
est TAB (U + 0009)Faux
où chacun
.
représente un ESPACE (U + 0020).la source
Juste pour les sourires, et au cas où quelqu'un d'autre rencontrerait une erreur similaire:
J'ai eu la fameuse erreur "séparateur manquant" parce que j'avais invoqué une règle définissant une fonction comme
plutôt que
c'est-à-dire
($
plutôt que$(
.la source
0x20
"d'espace", n'est-ce pas?$
Il s'agit d'une erreur de syntaxe dans votre Makefile. Il est assez difficile d'être plus précis que cela, sans voir le fichier lui-même, ou les parties pertinentes de celui-ci.
la source
Pour moi, le problème était que j'avais des
# ...
commentaires de fin de ligne intégrés dans unedefine ... endef
définition de variable multiligne. La suppression des commentaires a fait disparaître le problème.la source
define
directive étaient traités littéralement. En fait, le comportement n'est pas expliqué dans la documentation . (Pour plus de clarté: l'incorporation d'un signe numérique#
dans la directive n'est pas en soi une erreur de syntaxe. Mais elle n'est tout simplement pas interprétée comme le début d'un commentaire, ce qui est certes sujet à erreur.)Mon erreur était sur une ligne de déclaration de variable avec une extension multiligne. J'ai un espace de fin après le "\" qui en a fait une continuation de ligne invalide.
la source
Dans mon cas, l'erreur suivante a été provoquée. J'ai essayé d'exécuter des commandes globalement, c'est-à-dire en dehors de toute cible.
UPD. Pour exécuter la commande globalement, il faut être correctement formé. Par exemple, commande
deviendrait:
la source
Dans mon cas, la même erreur a été causée car
:
il manquait deux points à la fin comme dansstaging.deploy:
. Notez donc que cela peut être une erreur de syntaxe facile.la source
Dans mon cas, il me manquait en fait un onglet entre
ifeq
et la commande sur la ligne suivante. Aucun espace n'était là pour commencer.Aurait du être:
Notez que
<tab>
c'est un caractère de tabulation réella source
Dans mon cas, cette erreur a été causée par le manque d'un simple espace. J'avais ce bloc if dans mon makefile:
qui aurait dû être:
avec un espace après if.
la source
J'ai eu le fichier de séparateur manquant dans Makefiles généré par qmake. Je portais du code Qt sur une autre plateforme. Je n'avais ni QMAKESPEC ni MAKE. Voici le lien dont j'ai trouvé la réponse:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
la source
Donc apparemment, tout ce dont j'avais besoin était le paquet "build-essential", puis de lancer d'
autoconf
abord, ce qui faisait leMakefile.pre.in
, puis le./configure
puis lemake
qui fonctionnait parfaitement ...la source
Le code Makefile suivant a fonctionné:
la source