Frage

Wenn Sie eine Haskell-Quelldatei über ghc --make foo.hs GHC kompilieren läßt immer hinter einer Vielzahl von Zwischen anderen Dateien als foo.exe. Dies sind foo.hi und foo.o.

ich oft am Ende mit den .hi und .o Dateien zu löschen, die Ordner zu vermeiden unübersichtlich.

Gibt es eine Kommandozeilenoption für GHC nicht hinter seinen Zwischendateien zu verlassen? (Wenn auf #haskell gefragt, die beste Antwort, die ich bekam, war ghc --make foo.hs && rm foo.hi foo.o.

War es hilfreich?

Lösung

Ich habe durch die GHC docs ein bisschen weg, und es scheint nicht eine integrierte Möglichkeit zu sein, um die temporären Dateien automatisch entfernen - schließlich muss GHC diese Zwischendateien die endgültige ausführbare Datei erstellen, und ihre Anwesenheit beschleunigt Gesamtzusammenstellung, wenn GHC weiß, dass es nicht ein Modul neu kompiliert werden muss.

Sie könnten jedoch auch, dass die Einstellung der -outputdir Option finden wird Ihnen helfen, aus; dass alle Ihre Objektdateien (.o), Interface-Dateien (.hi) und FFI Stub-Dateien in dem angegebenen Verzeichnis. Es ist immer noch „Unordnung“, aber zumindest ist es nicht in Ihrem Arbeitsverzeichnis mehr.

Andere Tipps

Meine übliche Workflow ist Kabalen zu verwenden, anstatt ghc direkt. Dies setzt die outputdir Option in einen entsprechenden Build-Ordner und kann für Sie Dinge wie Build Schellfisch Dokumentation tun. Alles, was Sie brauchen, ist die .cabal Datei für Ihr Projekt zu definieren und dann Kabale oder Kabale Build direkt statt laufen ghc sagen installieren. Da Sie diesen Vorgang am Ende folgen müssen, wenn Sie jemals Ihre Arbeit auf Hackage teilen mögen, ist es eine gute Praxis, in zu erhalten, und es hilft auch Paketabhängigkeiten zu verwalten.

GHC jetzt die Optionen no-keep-hi-files und no-keep-o-files hat. Sehen Sie hier für weitere Informationen.

Sie können die -hidir auf / dev / null gesetzt, wie ich glaube, sie dort zu senden. Außerdem schaltet sich der -fno-Code Option in der Regel eine Menge Ausgang aus. Sie könnten nur wollen Cabal verwenden.

Es stellte sich heraus, dass die Verwendung -hidir / -odir / -outputdir ist nicht gut; / Dev / null ist eine Datei, und kein Verzeichnis. Siehe http://www.haskell.org/pipermail/xmonad/2010 -May / 010182.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top