2013-04-24 2 views
4

OCaml에서 더 복잡한 컴파일을 배우고 있습니다.OCaml에서 컴파일을 잘 관리하려면 어떻게해야하나요?

처음에는 C 프로그래머가 아니며 make 등을 알지 못합니다. Mac OS X terminal을 사용하고 있으며 Java 프로그래머이기도합니다.

내가 찾아 그 OCaml의에서이 같은 몇 가지 ocamlc, ocamlbuildocamlfind, oasis, 나는 매우 그들에 의해 혼동되었다.


은 질문 1

는 아무도 내가 ocamlc, ocamlbuild, ocamlfind, oasis 중 어떤 것을 사용해야 하나 말해 줄 수 있습니까?


질문이 내가이 튜토리얼 http://nicolaspouillard.fr/ocamlbuild/ocamlbuild-user-guide.html을 시도

, 그것은 ocamlbuild 좋습니다.

ocaml-batteries 또는 camomile과 같은 외부 라이브러리를 사용하려면 ocamlbuild을 사용하여 라이브러리를 어떻게 연결할 수 있습니까?


질문 3

이 모든 외부 라이브러리에 대한보다 실제적인 질문이다.

많은 ocaml 라이브러리에서 나는 opam install을 사용하여 설치합니다.

  1. 왜 라이브러리를 설치해야합니까? Java에서 일반적으로 lib를 어딘가에 복사 한 다음 lib의 경로를 -classpath 또는 -cp에 포함시킵니다. OCaml 라이브러리를 설치해야하는 이유는 무엇입니까?

  2. opam installacamomile (utf8)과 같은 lib에서 무슨 일이 일어 났을 까? 이런 종류의 설치는 lib의 소스 파일을 다운로드하고 어딘가에 복사합니까?

  3. 그러면 라이브러리를 어떻게 찾을 수 있습니까? 예를 들어, 내가 opam install camomile 인 경우, 어떻게 링크하거나 내 코드에서 사용할 수 있습니까?

  4. 일반적으로 ocaml library을 어떻게 사용합니까? 예를 들어, camomile (http://camomile.sourceforge.net/dochtml/index.html)의 경우 모듈에는 CamomileLibrary 등이 있습니다. 따라서 open 내 코드의 모듈을 사용해야하나요?

답변

2

도구 :

  • ocamlc : OCaml의 컴파일러에게
  • ocamlopt 바이트 코드 : 네이티브 코드 컴파일러를 OCaml을
  • ocamlfind : ocamlc 및 ocamlopt 주위 래퍼 다양한 OCaml의 패키지와/링크를 컴파일하려면, 즉, "ocamlfind ocamlopt -package camomile -c yourfile.ml"을 사용하여 yourfile.ml, 으로 컴파일하고 'ocamlfind ocamlopt -package camomile yourfile.cmx -linkpkg -o yourfile'을 사용하여 실행 파일을 만듭니다.
  • 오아시스 : autoconf를 & C/C에 대한 automake에 ++하지만 당신의 빠른 방법으로 '-pkg -pkg ... - ocamlfind을 -USE ocamlbuild'사용할 수있는 최근 ocamlbuild와

훨씬 간단 같은 빌드 시스템 생성기 ocamlfind 패키지 package1, package2로 프로젝트 빌드하기. 다음 단계는 'ocamlbuild -use-ocamlfind'를 사용하고 _tags 파일에 package() 지시문을 넣는 것입니다.

그러나 저는 오아시스를 사용하는 것이 좋습니다. 프로젝트를위한 빌드 시스템을 간단하게 만들 것을 권장합니다. oasis 또는 ocamlbuild를 사용할 때 "under-the-hood"가 발생하는 것을보고 싶다면 _build/_log 파일을 참조하십시오. 여기에는 모든 ocamlfind/ocamlc/ocamldep/ocamlopt 호출이 포함됩니다.

opam 질문은 아마도 별도의 질문에 속합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 단지 모든 과정에 대한 명확한 그림을 원한다. 현재는 내 머리 속의 엉망이다. _tags는 어디에 있어야합니까? –

+0

ocamlbuild를 실행하는 프로젝트의 루트 디렉토리에 있습니다. Ocamlbuild는 현재 디렉토리의 특정 파일을 찾고, 발견되면 빌드 방법을 구성하는 데 사용됩니다. '_tags'는 특정 파일을 컴파일 할 때 정의 할 태그 (예 : 검색 경로에 포함 할 패키지, 경고 플래그, 디버그 플래그, 연결할 패키지 등)를 정의하는 데 사용됩니다. 'myocamlbuild.ml'은 OCaml에서 추가 빌드 규칙을 정의하는 데 사용됩니다 (OASIS는 시작 지점으로 당신을 위해 매우 복잡한 것을 생성합니다). –

관련 문제