Tho*_*ash 7 ocaml module build menhir js-of-ocaml
我目前正在开发一个用OCaml编写的网站项目,并使用js_of_ocaml编译为javascript.只要我使用命令只有一个源文件,ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -o file.byte file.ml它就能很好地运行,但我希望在我的项目中包含几个模块.我怎样才能做到这一点 ?
其他模块实际上是由ocamllex和menhir制作的词法分析器和解析器.我已经阅读了关于如何使用ocamllex和menhir与js_of_ocaml 的教程,但它对安装js_of_ocaml的地方做了错误的假设(我用opam安装它)并且它使用ocamlbuild我想知道如何在不使用自动化的情况下手动完成像ocamlbuild这样的工具.
我通过尝试理解官方示例的makefile找到了解决方案.
这是我的Makefile:
OBJS=file1.cmo file2.cmo file3.cmo
NAME=projectname
OCAMLC=ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o
$(NAME).byte: $(OBJS)
$(OCAMLC) -linkpkg -o $@ $(OBJS)
$(NAME).js: $(NAME).byte
js_of_ocaml $<
%.cmo: %.ml
$(OCAMLC) -c $<
...
Run Code Online (Sandbox Code Playgroud)
ocamlbuild记录它执行的操作.在ocamlbuild调用之后,查看_build/_log并且您将看到它已调用的所有命令,带有完整的参数等.这可能是您最简单的方法来计算如何手动完成.
(关于+site-lib假设和OPAM,您应该向教程的作者报告,他们希望确保它也适用于OPAM用户.)