2016-07-10 2 views
4

이제 ocamlfind과 일부 패키지를 사용하여 컴파일러를 작성하려고합니다. 특히 ppx_sexp_convopam을 사용합니다.
어떤 방법 으로든 ppx_sexp_conv의 종속성에는 이 필요하므로 ocamlfind ocamlc -package ppx_sexp_conv으로 파일을 컴파일 할 때 컴파일 옵션 -I ~/.opam/VERSION/lib/compiler-libs이 추가됩니다.OCaml : 여러 cmi의 findlib 경고를 해결하는 방법

compiler-libsparsing.cmi, main.cmi, lexing.cmi과 같은 매우 일반적인 이름의 파일을 포함합니다.
.cmi 파일의 충돌을 다음과 같이 많은 잡음이 경고합니다

$ ocamlfind ocamlc -package ppx_sexp_conv -c parser.mli 
findlib: [WARNING] Interface main.cmi occurs in several directories: ., /home/nomaddo/.opam/4.02.3/lib/ocaml/compiler-libs 
findlib: [WARNING] Interface lexer.cmi occurs in several directories: ., /home/nomaddo/.opam/4.02.3/lib/ocaml/compiler-libs 
findlib: [WARNING] Interface topdirs.cmi occurs in several directories: /home/nomaddo/.opam/4.02.3/lib/ocaml/compiler-libs, /home/nomaddo/.opam/4.02.3/lib/ocaml 
findlib: [WARNING] Interface parser.cmi occurs in several directories: ., /home/nomaddo/.opam/4.02.3/lib/ocaml/compiler-libs 

```

참고 main.cmi, parsing.cmi, lexing.cmimain.cmi이 같은 디렉토리에 있는지.

나는 그러한 파일 이름이 공통적이며 모두가 사용하기를 원한다고 생각한다.
내 질문은, 어떻게 그런 시끄러운 경고를 조용히하는 것입니다. opam 1.2.2를 OCaml 4.02.3 : 그들에게
덕분에, ...

내 환경을 더 중요 경고 및 즉시 오류를 발견하기 어렵다.

답변

9

경고를 표시하지 않는 한 가지 방법은 findlib 환경 변수 OCAMLFIND_IGNORE_DUPS_IN/home/nomaddo/.opam/4.03.0/lib/ocaml/compiler-libs으로 설정하는 것입니다.

다음은 OCaml 4.03.0 및 ppx_sexp_conv 버전 113.33.01 + 4.03의 예입니다.

parser.mli : 쉘에서

type t = int [@@deriving sexp] 

다음

export OCAMLFIND_IGNORE_DUPS_IN=/home/nomaddo/.opam/4.03.0/lib/ocaml/compiler-libs 

ocamlfind ocamlc -package ppx_sexp_conv -dsource -c parser.mli 

당신은 .mli가 전처리 및 불필요한 경고가 나지 않습니다 볼 수 않습니다.

참조 : 당신의 빠른 응답

+0

감사합니다. 나는이 문제를 해결했다! – nomaddo

관련 문제