2017-03-09 1 views
0

ocamlbuild를 사용하여 성공적으로 빌드 한 프로젝트가 있습니다. 그러나, 나는 또한 최고 수준을 통해 다른 모듈에서 프로젝트의 개별 기능과 상호 작용하는 쉬운 방법을 원하지만 ocamlmktop 사용에 대한 나의 시도는 내가 원했던대로 효과가 없습니다. Active Directory에 .cmi 파일을 수동으로 넣지 않으면 "언 바운드 모듈"오류가 발생합니다. 나는 현재 구축하기 위해 사용하고 명령은 다음과 같습니다ocamlbuild와 함께 ocamlmktop 사용

ocamlfind ocamlmktop -I _build -o my_ocaml -linkpkg -package str module1.cmo module2.cmo 

_build 디렉토리에서 CMI 파일을 이동하지 않고이 프로젝트 구조에서 작동 할 수있는 최상위을 얻을 수있는 더 나은, 더 적은 해키 방법이 있나요?

편집 : 난 내가

./my_ocaml -I _build 

로 최상위를 실행하는 경우는 유형 및 모듈을로드 얻을 수 알아 냈어요하지만 여전히 해키 보인다. 검색 경로 또는 cmi 파일을 아마도 굽는 방법이 있습니까?

편집 2 : 내 문제에 대한 해결책은 실제로 인터페이스 파일에 대한이 제한 사항이있는 경우 사용자 지정 최상위 레벨을 컴파일하지 않는 것일 수 있다고 생각합니다. 대신로드 지시문을 .ocamlinit에 추가하여 모듈을 사용했습니다. 누구든지이 문제를 해결할 더 좋은 아이디어가 있다면 크게 감사하겠습니다.

Module1 
Module2 
subdir/Module3 

그런 다음 예상되는 방법으로 ocamlmktop를 호출 대상 my_ocaml.top를 구축, 당신은 결과 my_ocaml.top 최상위을 실행할 수 있습니다

답변

0

당신은 my_ocaml.mltop 파일에 원하는 모듈 이름을 나열하여 최상위을 구축 할 수 있습니다.

.cmi 파일을 찾으려면 유형 검사기의 포함 경로에 _build을 추가해야하는 방식이 변경되지 않습니다. 명령 행 인수 -I _build을 전달하거나 최상위 레벨에서 #dir "_build";;을 전달하여 최상위 레벨을 호출 할 때이 작업을 수행 할 수 있습니다. 원하는 경우 마지막 명령을 .ocamlinit에 입력 할 수도 있습니다.