makefile - configurar - Hacer un error para ifeq: error de sintaxis cerca del token inesperado
makefile windows (2)
Además, si las instrucciones condicionales se utilizan en funciones definidas, como:
define myFunc
ifeq (foo, bar)
...
endif
endef
En este caso, Make también lo tratará como un script de shell.
Este problema se puede resolver utilizando if-function en su lugar:
define myFunc
$(if condition,then-part[,else-part])
endef
Estoy escribiendo un Makefile que hace coincidir las cadenas en un lugar, el código es como:
if test ...; /
then /
shell scripts... /
fi
ifeq ($(DIST_TYPE),nightly)
shell scripts ...
endif
Aquí el primero if
es shell script, el segundo ifeq
es condicional de GNU Make. Sin embargo el siguiente error genera:
ifeq (nocturno, nocturno)
/ bin / sh: -c: línea 0: error de sintaxis cerca del token inesperado `nightly, nightly ''
/ bin / sh: -c: línea 0: `ifeq (nightly nightly) ''
¿Que esta pasando aqui? Parece que Make está intentando llamar al shell.
Gracias.
Jugué alrededor del código y encontré que las declaraciones condicionales deberían escribirse sin sangría, y esto resolvió mi problema.
Si no hay sangría, Make la tratará como una directiva por sí misma; De lo contrario, es considerado como un script de shell.
Código de ejemplo
Incorrecto:
target:
ifeq (foo, bar)
...
endif
Correcto:
target:
ifeq (foo, bar)
...
endif