[*]
Raúl Reddy
Este es mi archivo MAKE:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
cuando intento make clean
o make make
me sale este error:
:makefile:4: *** missing separator. Stop.
¿Cómo puedo arreglarlo?
AppleBee12
make tiene una relación muy estúpida con las pestañas. Todas las acciones de cada regla se identifican mediante pestañas. Y no, cuatro espacios no hacen una tabulación. Sólo una pestaña hace una pestaña.
Para verificar, uso el comando cat -e -t -v makefile_name
.
Muestra la presencia de pestañas con ^I
y terminaciones de línea con $
. Ambos son vitales para garantizar que las dependencias finalicen correctamente y las pestañas marcan la acción de las reglas para que sean fácilmente identificables para la utilidad make.
Ejemplo:
Kaizen ~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
\rm -fr ll$
## see here there is no ^I which means , tab is not present ....
## in this case you need to open the file again and edit/ensure a tab
## starts the action part
-
“cat -e -t -v makefile_name” es lo mejor. Alguna vez. Seguí mirando la pantalla, viendo lo que parecía una pestaña, y me perdí por completo que era la LÍNEA ÚNICA en todo el archivo que usaba espacios en lugar de una pestaña dura.
– arinmorf
1 de febrero de 2015 a las 15:44
-
Al copiar/pegar de un archivo MAKE a otro usando el editor vi (o vim), asegúrese de no agarrar accidentalmente la línea ~ (tilde) que indica el final del archivo. Un ~ real parece un marcador vi y causará el “separador faltante ***. Alto”. error. Esto puede parecer obvio, pero cuando sucede accidentalmente está lejos de ser evidente. Ver comentario de mi blog para más información.
– Scott
26 de febrero de 2016 a las 1:11
-
-v
opción paracat
el comando es redundante aquí porque-e
significa-vE
y-t
significa-vT
.– xxks-kkk
25 de abril de 2016 a las 10:38
-
No es más “estúpido” que Python necesite espacios en blanco para controlar el flujo, o que C necesite identificadores compuestos por ciertos caracteres, o que el inglés necesite vocales. Es solo una regla.
– pax diablo
1 de febrero de 2018 a las 1:47
-
@JuhaUntinen no, nunca ha cambiado y no, no funciona igual de bien.
– Científico loco
19 abr 2019 a las 22:52
En VS Code, simplemente haga clic en “Espacio: 4” en la esquina inferior derecha y cámbielo a la pestaña cuando edite su Makefile.
-
VS Code reconoció que mi archivo ‘common.mk’, extraído de un ‘Makefile’ sin sufijo, era un archivo de creación y lo resaltó correctamente, pero silenciosamente comenzó a sangrar con espacios en lugar de tabulaciones.
– Francisco Norton
8 de enero de 2018 a las 18:28
-
Esto funcionó cuando seleccioné “Convertir sangría en pestañas”
– abk
22 de noviembre de 2021 a las 2:42
denny mateo
Siempre debe escribir el comando después de un Pestaña y no espacios en blanco.
Esto aplica a gcc
línea (línea #4) en su caso. Necesitas insertar una pestaña antes gcc
.
también reemplazar \rm -fr ll
con rm -fr ll
. Inserte pestañas antes de este comando también.
-
Para que quede muy claro, debe haber un carácter TAB fijo como primer carácter en cada línea de receta lógica. Después de la TAB, puede agregar cualquier tipo de espacio en blanco que desee.
– Científico loco
5 de junio de 2013 a las 12:47
-
¿Debería el tabspace ser igual a 2 o 4? en /.vimrc establecer tabstop = 2 o 4?
– Raúl Reddy
5 de junio de 2013 a las 17:52
-
@RahulReddy cómo un editor muestra una pestaña no tiene nada que ver con si hay o no un carácter de pestaña en la configuración.
– xaxxon
14 mayo 2018 a las 11:14
Utilizando .editorconfig
para arreglar las pestañas automáticamente:
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[Makefile]
indent_style = tab
-
Esto también ayuda en GoLand
– Vizjerei
30 de enero de 2020 a las 8:38
-
Encuentro IDE asuntos reales. La edición de pestañas no es compatible con pycharm. Cuando cambio a ATOM, la entrada TAB funciona.
– Caballero de la luz de la luna
12 de febrero de 2020 a las 10:33
-
Si su IDE sangra automáticamente con espacios, es posible que pueda ingresar una pestaña Unicode con \u09, lo que en algunos entornos de escritorio para Linux se puede hacer con Ctrl + Shift + U y luego escribir ’09’. ” “. Aunque no es muy divertido.
– szmoore
4 oct 2021 a las 9:51
TLDR;
La sintaxis del archivo MAKE puede ser peculiar
si desea que una línea de código se interprete como make
código solo debe estar sangrado con espacios.
si desea que una línea de código se interprete como bash
código solo debe estar sangrado con pestañas
sometask:
ifeq($FOO,bar) // this is make code. only spaces
echo "foobar" // this is bash code. only tabs
endif // again, this is make code. only spaces
técnicamente es la sangría principal la que dicta el intérprete.
pancho
Es una pregunta bastante antigua, pero aún así me gustaría decir sobre una opción más usando vi/vim
editor para visualizar las pestañas. Si usted tiene vi/vim
instalado, luego abra un Makefile
(p.ej vim Makefile
) e ingrese :set list
. Esto mostrará el número de pestañas insertadas como se muestra a continuación,
%-linux: force$
^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then \$
^I^Iecho ===== Generating build tree for legacy $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@ legacy; \$
^Ielse \$
^I^Iecho ===== Generating build tree for $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@; \$
^Ifi$
^Icd build-$@;make$
Bogdan Alexandru Militaru
Si alguno de ustedes está usando un producto de Intellij, la solución para esto es la siguiente:
- Vaya a Preferencias > Editor > Estilo de código
- aquí debe seleccionar el tipo de archivo relacionado con su problema. Pero lo más probable es que necesite seleccionar
Other File Types
. - En la pestaña abierta, marque la casilla de verificación para
Use tab character
y ten cuidado,Tab size
yIndent
los valores deben ser 4.
Puede usar .RECIPEPREFIX para cambiar los usos del personaje. Ver: gnu.org/software/make/manual/html_node/…
– aseq
1 de diciembre de 2016 a las 9:30
¿Cómo no se cerró esto como un duplicado? Posible duplicado de Make error: falta separador
– jww
24 de agosto de 2017 a las 16:32
En el mcedit “Opciones -> General”, asegúrese de que las “medias pestañas falsas” no tengan “X” entre corchetes antes de esa opción.
– Jovan Ruzic
21 de marzo de 2019 a las 3:53
¡Gracias! ¡El medio espacio en MC era el problema!
– Alexei
30 sep 2021 a las 14:59
En vim, use:
Ctrl+V + Tab
– matthewpark319
3 de diciembre de 2021 a las 4:21