Как остановить GHC от генерации промежуточных файлов?

StackOverflow https://stackoverflow.com/questions/1411089

  •  05-07-2019
  •  | 
  •  

Вопрос

При компиляции исходного файла haskell с помощью ghc --make foo.hs GHC всегда оставляет различные промежуточные файлы, кроме foo.exe . Это foo.hi и foo.o .

Мне часто приходится удалять файлы .hi и .o, чтобы не загромождать папки.

Есть ли опция командной строки, чтобы GHC не оставлял свои промежуточные файлы? (Когда меня спросили на #haskell, лучший ответ, который я получил, был ghc --make foo.hs & amp; rm foo.hi foo.o .

Это было полезно?

Решение

Я немного просмотрел документы GHC, и, похоже, не существует встроенного способа автоматического удаления временных файлов - в конце концов, GHC нужны эти промежуточные файлы для создания окончательного исполняемого файла, и их присутствие ускоряет общую компиляцию, когда GHC знает, что не нужно перекомпилировать модуль.

Однако вы можете обнаружить, что настраивает - опция outputdir поможет вам; это поместит все ваши объектные файлы ( .o ), файлы интерфейса ( .hi ) и файлы-заглушки FFI в указанный каталог. Это все еще "беспорядок", " но, по крайней мере, его больше нет в вашем рабочем каталоге.

Другие советы

Мой обычный рабочий процесс заключается в прямом использовании cabal, а не ghc. Это устанавливает параметр outputdir в соответствующую папку для сборки и может выполнять такие вещи, как сборка документации Haddock. Все, что вам нужно, это определить файл .cabal для вашего проекта, а затем сказать, что установка cabal или сборка cabal вместо непосредственного запуска ghc. Поскольку в конце концов вам нужно следовать этому процессу, если вы хотите поделиться своей работой по взлому, это хорошая практика, и она также помогает управлять зависимостями пакетов.

GHC теперь имеет опции no- keep-hi-files и no-keep-o-files . См. здесь для получения дополнительной информации.

Вы можете установить -hidir в / dev / null, я думаю, отправив их туда. Кроме того, опция -fno-code в общем случае отключает большую часть вывода. Возможно, вы просто захотите использовать Cabal.

Оказывается, использование -hidir / -odir / -outputdir бесполезно; / dev / null - это файл, а не каталог. См. http://www.haskell.org/pipermail/xmonad/2010. -май / 010182.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top