编译ocaml无法在opam库中找到模块,js_from_ocaml中的Js.ml

时间:2015-09-24 11:51:38

标签: ocaml js-of-ocaml

尝试将ocaml编译为javascript。

我放入https://gist.github.com/larsr/6b3cd6f62d54d56e3f9a的一些OCaml代码使用menhir解析器和js_of_ocaml库。我已经使用opam安装了它们。

代码来自http://toss.sourceforge.net/ocaml.html。 它是词法分析器和解析器以及调用它们的主程序。 目标是从ocaml代码生成一个javascript程序,并在网页中运行它。

我能够使用来自repo中Makefile的menhir make来编译第一个Main程序,这样做

ocamlbuild -use-menhir -menhir "menhir --external-tokens Lexer" Main.native

我可以编译一个仅使用js_of_ocaml的程序,make Formula.js

ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \
      -syntax camlp4o -linkpkg -o Formula.byte Formula.ml
js_of_ocaml Formula.byte

我的问题是,现在我无法ocamlfind建立JsClient.js

make JsClient.js

所以我无法为JsClient.ml'生成javascript代码。我得到的错误是编译器无法找到Js使用的模块JsClient。代码似乎在我的home-dir的opam库中,但我无法获得ocamlfind使用它的正确参数。

如何将JsClient.ml编译为JsClient.js

1 个答案:

答案 0 :(得分:1)

用于编译JsClient.ml文件的规则并不好。

JsClient.byte:
    ocamlbuild -use-menhir -menhir "menhir --external-tokens Lexer" 

正如您所说,此文件使用模块Js,因此您需要使用与文件Formula.ml相同的方式进行编译:

ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \
      -syntax camlp4o -linkpkg -o JsClient.byte JsClient.ml
js_of_ocaml JSClient.byte