run phony makefile

makefile - phony - ¿Cómo ignorar el error mv?



makefile windows (5)

Estoy creando un Makefile que mueve un archivo de salida ( foo.o ) a un directorio diferente ( baz ).

El archivo de salida se mueve según lo deseado al directorio. Sin embargo, como make no recompilará el archivo de salida si escribo make nuevamente, mv obtiene un error cuando intenta mover el archivo vacío inexistente al directorio baz .

Así que esto es lo que he definido en mi regla para make all después de toda la compilación:

-test -e "foo.o" || mv -f foo.o ../baz

Lamentablemente, sigo recibiendo errores.


Algo como

test -e "foo.o" && mv -f foo.o ../baz

debería funcionar: el operador debe ser && lugar de || .

Puedes experimentar con esto probando estos comandos:

test -e testfile && echo "going to move the file" test -e testfile || echo "going to move the file"


Noté que nadie ha respondido la pregunta original en sí, específicamente, cómo ignorar los errores (todas las respuestas se refieren actualmente a solo llamar al comando si no causa un error).

Para ignorar realmente los errores, simplemente puede hacer:

mv -f foo.o ../baz 2>/dev/null; true

Esto redireccionará la salida de stderr a null , y seguirá el comando con true (que siempre devuelve 0 , haciendo creer que el comando tuvo éxito independientemente de lo que realmente sucedió), permitiendo que el flujo de programa continúe.


Errores en Recetas (de TFM)

Para ignorar los errores en una línea de receta, escriba a - al principio del texto de la línea (después de la pestaña inicial).

Entonces el objetivo sería algo así como:

moveit: -mv foo.o ../baz


-test -e "foo.o" || if [ -f foo.o ]; then mv -f foo.o ../baz; fi;

Eso debería funcionar


+@[ -d $(dir $@) ] || mkdir -p $(dir $@)

es lo que uso para crear silenciosamente una carpeta si no existe. Para tu problema algo como esto debería funcionar

-@[ -e "foo.o" ] && mv -f foo.o ../baz