Question

Lors de la compilation d’un fichier source haskell via ghc --make foo.hs , GHC laisse toujours derrière lui une variété de fichiers intermédiaires autres que foo.exe . Ce sont foo.hi et foo.o .

Je finis souvent par avoir à supprimer les fichiers .hi et .o pour éviter d'encombrer les dossiers.

Existe-t-il une option de ligne de commande permettant à GHC de ne pas laisser ses fichiers intermédiaires? (Quand on m'a posé la question sur #haskell, la meilleure réponse que j'ai obtenue est ghc --make foo.hs & amp; & amp; rm foo.hi foo.o .

Était-ce utile?

La solution

J'ai parcouru un peu la documentation GHC et il ne semble pas exister de méthode intégrée pour supprimer automatiquement les fichiers temporaires. Après tout, GHC a besoin de ces fichiers intermédiaires pour générer l'exécutable final. leur présence accélère la compilation lorsque GHC sait qu'il n'est pas nécessaire de recompiler un module.

Cependant, vous pouvez constater que définir le - l’option outputdir vous aidera; cela placera tous vos fichiers objet ( .o ), vos fichiers d'interface ( .hi ) et vos fichiers de raccord FFI dans le répertoire spécifié. C'est encore "fouillis", mais au moins ce n’est plus dans votre répertoire de travail.

Autres conseils

Mon flux de travail habituel consiste à utiliser cabale plutôt que ghc directement. Ceci définit l'option outputdir dans un dossier de construction approprié et peut effectuer des tâches telles que la construction de la documentation haddock. Tout ce dont vous avez besoin est de définir le fichier .cabal pour votre projet, puis d’instituer cabal install ou cabal build au lieu d’exécuter directement ghc. Étant donné que vous devez suivre ce processus à la fin si vous souhaitez partager votre travail sur le piratage, il est recommandé de le faire et cela permet également de gérer les dépendances des packages.

GHC dispose désormais des options non. keep-hi-files et no-keep-o-files . Voir ici pour plus d'informations.

Vous pouvez définir -hidir sur / dev / null, je pense, en les envoyant là-bas. En outre, l'option -fno-code désactive généralement beaucoup de sorties. Vous voudrez peut-être simplement utiliser Cabal.

Il s'avère que l'utilisation de -hidir / -odir / -outputdir n'est pas bonne; / dev / null est un fichier et non un répertoire. Voir http://www.haskell.org/pipermail/xmonad/2010 -Mai / 010182.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top