Domanda

Quando si compila un file sorgente haskell tramite ghc --make foo.hs GHC lascia sempre dietro una varietà di file intermedi diversi da foo.exe . Questi sono foo.hi e foo.o .

Spesso finisco per eliminare i file .hi e .o per evitare di ingombrare le cartelle.

Esiste un'opzione della riga di comando affinché GHC non lasci indietro i suoi file intermedi? (Quando mi è stato chiesto su #haskell, la migliore risposta che ho ricevuto è stata ghc --make foo.hs & amp; & amp; rm foo.hi foo.o .

È stato utile?

Soluzione

Ho esaminato un po 'i documenti GHC e non sembra esserci un modo integrato per rimuovere automaticamente i file temporanei - dopotutto, GHC ha bisogno di quei file intermedi per costruire l'eseguibile finale, e la loro presenza accelera la compilazione generale quando GHC sa che non è necessario ricompilare un modulo.

Tuttavia, potresti trovare che impostando il - outputdir opzione ti aiuterà; che posizionerà tutti i file oggetto ( .o ), i file di interfaccia ( .hi ) e i file stub FFI nella directory specificata. È ancora " disordine, " ma almeno non è più nella tua directory di lavoro.

Altri suggerimenti

Il mio solito flusso di lavoro è usare direttamente la cabala piuttosto che ghc. Questo imposta l'opzione outputdir in una cartella di build appropriata e può fare cose come compilare la documentazione dell'eglefino per te. Tutto ciò di cui hai bisogno è definire il file .cabal per il tuo progetto e quindi dire installazione di cabala o build di cabala invece di eseguire direttamente ghc. Dato che alla fine devi seguire questo processo se vuoi condividere il tuo lavoro sugli hacker, è una buona pratica approfondire e aiuta anche a gestire le dipendenze dei pacchetti.

GHC ora ha le opzioni no- keep-hi-files e no-keep-o-files . Vedi qui per ulteriori informazioni.

Puoi impostare -hidir su / dev / null, penso, inviandoli lì. Inoltre, l'opzione -fno-code in generale disattiva un sacco di output. Potresti semplicemente voler usare Cabal.

Si scopre che l'uso di -hidir / -odir / -outputdir non va bene; / dev / null è un file e non una directory. Vedi http://www.haskell.org/pipermail/xmonad/2010 -May / 010182.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top