Pregunta

Al compilar un archivo fuente haskell a través de ghc --make foo.hs , GHC siempre deja una variedad de archivos intermedios distintos de foo.exe . Estos son foo.hi y foo.o .

A menudo termino teniendo que eliminar los archivos .hi y .o para evitar saturar las carpetas.

¿Existe una opción de línea de comando para que GHC no deje atrás sus archivos intermedios? (Cuando se me preguntó en #haskell, la mejor respuesta que obtuve fue ghc --make foo.hs & amp; & amp; rm foo.hi foo.o .

¿Fue útil?

Solución

He revisado un poco los documentos de GHC, y no parece haber una forma integrada de eliminar los archivos temporales automáticamente; después de todo, GHC necesita esos archivos intermedios para construir el ejecutable final, y su presencia acelera la compilación general cuando GHC sabe que no tiene que volver a compilar un módulo.

Sin embargo, puede encontrar que configurando el - La opción outputdir te ayudará; eso colocará todos sus archivos de objetos ( .o ), archivos de interfaz ( .hi ) y archivos de resguardo FFI en el directorio especificado. Todavía es "desorden", pero al menos ya no está en su directorio de trabajo.

Otros consejos

Mi flujo de trabajo habitual es usar cabal en lugar de ghc directamente. Esto establece la opción outputdir en una carpeta de compilación adecuada y puede hacer cosas como compilar documentación de eglefino para usted. Todo lo que necesita es definir el archivo .cabal para su proyecto y luego decir cabal install o cabal build en lugar de ejecutar ghc directamente. Dado que debe seguir este proceso al final si alguna vez desea compartir su trabajo sobre piratería, es una buena práctica entrar y también ayuda a administrar las dependencias del paquete.

GHC ahora tiene las opciones no- keep-hi-files y no-keep-o-files . Consulte aquí para obtener más información.

Puede configurar -hidir en / dev / null, creo, enviándolos allí. Además, la opción -fno-code en general desactiva muchos resultados. Es posible que solo desee usar Cabal.

Resulta que usar -hidir / -odir / -outputdir no es bueno; / dev / null es un archivo y no un directorio. Ver http://www.haskell.org/pipermail/xmonad/2010 -Mayo / 010182.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top