haskell - tecnicas - ¿Cómo evitar que GHC genere archivos intermedios?
procedimiento para archivar documentos en una empresa (5)
Al compilar un archivo fuente ghc --make foo.hs
través de ghc --make foo.hs
GHC siempre deja atrás una variedad de archivos intermedios que no sean foo.exe
. Estos son foo.hi
y foo.o
A menudo termino teniendo que eliminar los archivos .hi y .o para evitar abarrotar las carpetas.
¿Hay una opción de línea de comando para que GHC no deje atrás sus archivos intermedios? (Cuando se le preguntó en #haskell, la mejor respuesta que obtuve fue ghc --make foo.hs && rm foo.hi foo.o
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 sus velocidades de presencia. compilación general cuando GHC sabe que no tiene que volver a compilar un módulo.
Sin embargo, puede encontrar que configurar la opción -outputdir
lo ayudará; eso colocará todos los archivos de objetos ( .o
), archivos de interfaz ( .hi
) y archivos de código auxiliar FFI en el directorio especificado. Todavía es "desorden", pero al menos ya no está en su directorio de trabajo.
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 apropiada y puede hacer cosas como compilar documentación de eglefino para usted. Todo lo que necesitas es definir el archivo .cabal para tu proyecto y luego decir cabal install o cabal build en lugar de ejecutar ghc directamente. Como debe seguir este proceso al final si alguna vez desea compartir su trabajo en hackage, es una buena práctica participar y también ayuda a administrar las dependencias del paquete.
Puede configurar -hidir a / dev / null, creo, enviándolos allí. Además, la opción -fno-code en general apaga una gran cantidad de salida. Tal vez solo quieras 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-May/010182.html
GHC ahora tiene las opciones no-keep-hi-files
y no-keep-o-files
. Mira aquí para más información.