热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

加载OCaml模块不在当前目录中

如何解决《加载OCaml模块不在当前目录中》经验,为你挑选了1个好方法。

我正在写一个大型的OCaml项目.我写了一个foo.ml完美的文件.在目录的子目录中foo.ml,有一个文件bar.ml.

bar.ml引用代码foo.ml,所以它的开头是:

open Foo

这在编译时给了我一个错误:

Unbound module Foo.

如何在不改变位置的情况下解决这个问题foo.ml



1> octachron..:

简单的方法是使用OCaml构建系统之一,如ocamlbuild或oasis.另一种选择是jbuilder,但是jbuilder对文件组织非常了解,并且不允许你要求的那种子目录结构.

更明确的路径带有警告:OCaml构建过程很复杂,许多移动部件很难处理.

在这个习惯性警告之后,当查找模块时,OCaml编译器首先在当前编译环境中查找模块,然后在"-I"选项标志指定的目录中查找编译接口".cmi"文件(加上当前目录和标准库目录).

因此,为了编译您的bar.ml文件,您需要使用该-I ..选项在包含目录列表中添加父目录.

毕竟,您将发现在链接阶段,所有目标文件(即.cmo或.cmx)都需要以与项目的依赖关系图兼容的拓扑顺序列出.

因此,让我重复一下我的建议:使用适当的构建系统.


推荐阅读
author-avatar
向陽阿莫_545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有