2009-12-04 2 views
2

ocaml에 응용 프로그램을 작성했습니다. 그것은 여러 모듈로 구성 :ocamlc, 모듈 컴파일

  • 백분율 (util.ml)
  • 근무처 (work1.ml) - 개방 백분율
  • 근무처 (work2.ml) - 개방 백분율, 너무
  • 홈페이지 (main.ml) - 모든 항목을 엽니 다.

ocamlc를 사용하여 컴파일 할 때 Work2 모듈에서 컴파일이 실패하고 Util에서 언 바운드 값에 대한 오류 메시지가 표시됩니다. 별도의 편집이 작동하지 않습니다. 내가 뭘 잘못 했니?

ocamlc -o app.out -vmthread -pp camlp4o.opt unix.cma threads.cma camlp4of.cma util.ml work1.ml work2.ml main.ml

감사합니다!

+1

으로 구축 할 수 있습니다. – LB40

답변

2

커맨드 라인에서 파일의 순서는 OCaml에서 중요합니다. 파일을 종속성 순서로 저장해야합니다. 이것은 아마도 당신이 가진 문제 일 것입니다. 당신이 좋아하는 모듈이 있다면 ... 작동 할 때까지 파일의 순서를 변경

0

을 시도해보십시오 : 각 모듈의 호출을 열 때이 찾을 것으로

module Util 
    ... 
end;; 

module Work2 
    open Util 
    ... 
end;; 

module Main 
    open Util;; 
    open Work2;; 
    ... 
end;; 

Module Work1 
    open Work2;; 
    ... 
end;; 

다음 순서는 방법으로해야합니다 순서가 될 것이다 abover 열 모듈이 이미 예에서, 컴파일러

은 백분율 ->은 근무처 ->은 근무처 -> 메인 OCaml의 모듈에 대한 순환 redundency를 지원하지 않습니다

공지 사항, 당신은 할 수 없음을 의미 앱이 모듈의 많은 약간 복잡 경우 Ocamldephttp://caml.inria.fr/pub/docs/manual-ocaml/manual027.html를 사용할 수

module Work1 
     open Work2;; 
end;; 

module Work2 
     open Work1;; 
end;; 

을 가지고 당신을 위해 그래프 의존성을 파악한다.

0

ocamlbuild를 사용하면 마법으로 종속성을 파악하고 별도의 디렉토리에 빌드하며 ocamlfind (3.12 이후)와 쉽게 통합되며 일반적으로 멋지다.

가와 _tags 파일을 만듭니다

true: thread, package(unix) 
<*.ml>: camlp4o 

을 그리고 당신은 오류를 게시해야

ocamlbuild -use-ocamlfind main.byte