2017-03-09 117 views
0

我有一个使用ocamlbuild成功构建的项目。不过,我还想通过顶层与不同模块的项目个别功能交互的简单方法,但我尝试使用ocamlmktop并没有按照我的意愿工作。我发现,除非手动将.cmi文件放在活动目录中,否则会出现“未绑定模块”错误。我目前使用建立的命令是:与ocamlbuild一起使用ocamlmktop

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

是否还有更好的,少哈克的方式来获取顶级在这个项目结构的工作不动,CMI文件出_build目录?

编辑:我想通了,我可以让我办顶层为

./my_ocaml -I _build 

它加载的类型和模块但这似乎仍然哈克。有没有办法在可能的情况下烘焙搜索路径或cmi文件?

编辑2:我认为我的问题的解决方案实际上可能不是编译自定义顶层给定此接口文件的限制。我已经将加载指令添加到我的.ocamlinit以使用模块。如果有人有更好的想法来解决这个问题,我将不胜感激。

回答

0

您可以通过在my_ocaml.mltop文件中列出您想要的模块名称建立一个顶层:

Module1 
Module2 
subdir/Module3 

然后构建目标my_ocaml.top将调用ocamlmktop以预期的方式,你可以运行结果my_ocaml.top顶层。

这不会改变您需要将_build添加到包含路径的类型检查程序能够找到.cmi文件的方式。你可以通过传递命令行参数-I _build或者从顶层的#dir "_build";;来调用顶层,如果你愿意,最后的命令也可以放在你的.ocamlinit中。