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 && rm foo.hi foo.o.

도움이 되었습니까?

해결책

GHC 문서를 조금씩 살펴 보았는데 임시 파일을 자동으로 제거하는 내장 방법이없는 것 같습니다. 결국 GHC는 최종 실행 파일을 구축하기 위해 중간 파일이 필요하며 그 존재 속도가 필요합니다. GHC가 모듈을 다시 컴파일 할 필요가 없다는 것을 알고있을 때 전체 컴파일 업.

그러나 당신은 그것을 찾을 수 있습니다 설정 -outputdir 옵션 당신을 도울 것입니다; 모든 객체 파일을 배치합니다 (.o), 인터페이스 파일 (.hi지정된 디렉토리의) 및 FFI 스터브 파일. 여전히 "혼란"이지만 적어도 더 이상 작업 디렉토리에 없습니다.

다른 팁

일반적인 워크 플로우는 GHC 대신 Cabal을 직접 사용하는 것입니다. 이것은 출력 옵션을 적절한 빌드 폴더로 설정하고 Build Haddock 문서와 같은 작업을 수행 할 수 있습니다. 프로젝트의 .cabal 파일을 정의한 다음 GHC를 직접 실행하는 대신 Cabal 설치 또는 Cabal 빌드라고 말하면됩니다. 해킹에 대한 작업을 공유하고 싶다면 결국이 프로세스를 따라야하므로 패키지 의존성을 관리하는 데 도움이되는 것이 좋습니다.

GHC에는 이제 옵션이 있습니다 no-keep-hi-files 그리고 no-keep-o-files. 여기를 봐 자세한 내용은.

-hidir를 /dev /null로 설정할 수 있습니다. 또한 -fno 코드 옵션은 일반적으로 많은 출력을 끕니다. Cabal을 사용하고 싶을 수도 있습니다.

-hidir/-odir/-outputdir를 사용하는 것이 좋지 않다는 것이 밝혀졌습니다. /dev/null은 디렉토리가 아닌 파일입니다. 보다 http://www.haskell.org/pipermail/xmonad/2010-may/010182.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top