Me gustaría usar $(error ...)
para abortar mi proceso de fabricación si ciertas condiciones previas no se cumplen. El objetivo fails_to_work
debe abortar cuando falla test -d /foobar
.
BAD.mk
all: this_works fails_to_work
this_works:
@echo echo works...
@test -d ~ || echo ~ is not a directory
@test -d /foobar || echo /foobar is not a directory
fails_to_work:
@echo error does not work...
@test -d ~ || $(error ~ is not a directory)
@test -d /foobar || $(error /foobar is not a directory)
$ make -f BAD.mk
echo works...
/foobar is not a directory
BAD.mk:9: *** ~ is not a directory. Stop.
Como se puede ver, ni siquiera "error no funciona ..." se hace eco de la pantalla. La receta para fails_to_work
falla antes de que comience. ¿Cómo puedo solucionar esto? Uno de mis casos de uso es @test -d $(MY_ENV_VAR)
, pero no creo que eso difiera de las rutas codificadas en el ejemplo.
ACTUALIZACIÓN (información de la versión)
$ --version hacen
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
Gracias. Tu primera sugerencia funciona (la cual estoy adoptando así: 'if! Test -d/foobar; luego echo"/foobar no es un directorio "; exit 1; fi'), pero tu segundo no. Con un directorio válido, el error aún se golpea. –