Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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