2015-01-04 1 views
3

나는 라이브러리를 구성하는 모듈을 나열하는 mylib.mllib 파일을 통해 OCaml 라이브러리를 컴파일하기 위해 ocamlbuild을 사용하고 있습니다. 나중에 ocamlfind을 사용하여 라이브러리 파일을 설치하려고합니다. ocamlbuild으로 빌드 된 바이너리 파일과 달리 모든 라이브러리 파일은 _build 디렉토리에 있습니다.ocamlbuilder를 사용하여 라이브러리를 빌드하고 ocamlfind를 사용하여 설치 - 가장 좋은 방법은 무엇입니까?

ocamlfind install META _build/a.cma _build/a.cmxa ... 

또는 ocamlbuildocamlfind 사이에 더 나은 통합이 같은 것을 사용하여 설치하는 올바른 방법인가? 특히 ocamlbuild-install-lib-dir 플래그가 발견되었지만 그 목적에 대한 문서를 찾을 수 없습니다.

저는 oasis을 알고 있지만 지금 당장 Makefile과 install 타겟에서 문제를 해결하고 싶습니다. 이 모든 것은 라이브러리 매니저 인 opam을 사용하는 맥락에서 다루지 만, 토론을위한 것은 아닙니다.

+1

opam이 파일을 설치하는 메커니즘을 제공한다는 것을 알고있을 것입니다. – didierc

+1

언급 한 옵션은 ocamlbuild 라이브러리가있는 기본 디렉토리 (보통'/ usr/lib/ocaml/ocamlbuild /')를 덮어 씁니다. 'ocamlbuild -where'를 시도한 다음, 그 옵션과 더미 경로를 다시 시도하여 그 효과를 확인하십시오. – didierc

+2

ocamlbuild와 ocamlfind install-wise에는 특별한 통합이 없습니다. Ocamlfind는 ocamlbuild가 처음 릴리스 된 후 오랜 시간 후에 추가되었으며, 처음에는 ocamlbuild가 ocamlfind를 사용하지 않았습니다. Ocamlbuild는 새로운 유지 관리 담당자가 인수하여 패키지 관리 기능에 대한 ocamlfind를 지원하기 시작했지만 설치는 ocamlbuild 임무 중 하나가 아니므로 오아시스와 opam이 시작된 이유입니다. – didierc

답변

1

아니요, 특정 통합이 없습니다. ocamlbuild은 사전 빌드 (구성) 및 빌드 후 (설치) 도구에 대해 알지 못하며, ocamlfind은 빌드 도구와 비슷하지 않습니다.

ocamlbuild_build/에서 타겟을 안정적으로 simlinking하는 것이 좋지 않다는 것이 맞습니다. 이것은 알려진 결함이지만 문제가되는 경우 report 특정 사례에 대해 자유롭게 문의하십시오. 어쨌든 _build/에있는 파일을 직접 참조하는 것이 더 좋습니다.

ocamlbuild가 OPAM의 .install 파일을 손으로 직접 작성하지 않고 (또는 makefile 스크립트 작성) 도움을 주려면 Daniel Bünzli의 feature request이 있습니다. 필자는 개인적으로 그러한 기능을 수행 할 시간이 없었지만,이 전면에있는 ocamlbuild 기여도를 열렬히 환영 할 것입니다.

관련 문제