2012-01-19 4 views
5

Unix 프로젝트에서 파일을 몇 개 만들었습니다. 많은 파일을 다른 PC 나 폴더에서 실행하려면 모든 파일을 거기에 복사해야합니다. 모두 수입품에 연결되어 있습니다. 실행 가능한 haskell 프로그램을 만들려면 어떻게해야합니까?Haskell-Unix의 다중 .hs 파일 컴파일

나는 예를 당이 :

main.hs - main where all the program executes; using,besides haskell, unix shell. 
ex1.hs - basically types of data, some functions. 
ex2.lhs - same as ex1.lhs but is literate with LaTeX 
pic.jpg - picture to use on the pdflatex 
package.sty - package needed to use some functions 

가 어떻게 진행하고이 모든 컴파일합니까?

>ghc -o MAIN main.hs ex1.hs ex2.lhs pic.jpg package.sty 

Failed to load interface for 'ex1.hs' 그리고 수입 ex1.hs

호기심 I가을 수입 ex1.hs 거래를하는 경우이다이있는 라인이다 : 내가 GHC를 사용하고 있지만 항상 오류를주는 시도 import ex2.lhs 라인이 ex2에서 오류를 발생합니다.

+1

_ghc_를 원하셨습니까? –

+1

'.jpg' 또는'.sty' 파일을 어떻게 컴파일하고 싶습니까? 실행 파일에 임베드해야합니까? – dflemstr

+0

예 프로그램이 pdf를 생성하고 jpg가 필요하고 sty가 패키지 인 이유가 필요합니다. – MrFabio

답변

9

    하스켈 모듈 이름은 대문자로 시작, 그래서 Ex1.hsEx2.hsex1.hsex2.hs 이름을 변경하여 시작해야합니다

  1. . 또한 module Ex1 where으로 시작해야합니다. 그렇지 않으면 모듈 이름이 Main으로 기본 설정되며 모듈 이름이 파일 이름과 일치하지 않으면 GHC가 매우 혼란 스럽습니다.

  2. import 문은 파일 이름이 아닌 모듈 이름을 참조해야하므로 main.hs에서 모듈 이름과 일치하도록 변경해야합니다.

    import Ex1 
    import Ex2 
    
  3. 지금 ghc --make main.hs 컴파일하고, 자동으로 다른 모듈을 찾아야한다. .hs.lhs 확장자를 가진 모듈을 검색하고 후자의 Haskell 파일을 올바르게 처리합니다.

큰 프로젝트의 경우, Cabal, 대부분의 하스켈 라이브러리 및 프로그램에 의해 사용되는 빌드 시스템을 사용하여 조사한다. Makefile과 같은 일종의 종속성과 컴파일러 옵션을 관리하는 데 도움이 될 것입니다.

+0

_ghc --make main.hs_는 작동하지만 이름은 .o 파일을 만들고 그림은 컴파일되지 않습니다. 그런데 어떻게 실행할 수 있습니까? 원인 _./main.o_ 또는 _./main_가 작동하지 않습니다. – MrFabio

+0

@GoodGuyGreg : 컴파일이 성공했다고 가정하면'./main'이 작동합니다. 나는 그림 부분을 컴파일하는 것에 대해 혼란스러워한다. LaTeX 컴파일에 대해 이야기하고 있습니까? – hammar

+0

예, 그것은 funtion에서 pdf를 컴파일하지만 jpg를 컴파일하는 것이 불가능하다면 아무 문제없이 제거 할 수 있습니다. 그러나 문제는 컴파일 할 때 .o 파일을 .hs 및 .lhs를 main으로 가져올 때 생성하는 것입니다. hs 및 ./main은 존재하지 않는다고 말합니다. – MrFabio

3

시도

ghc --make main.hs

GHC이 할 수있는 모든 일을 시도해야한다

...