【发布时间】:2010-02-05 18:49:14
【问题描述】:
我最近决定整理我的项目目录中的文件。我将针对几种不同文件类型的解析器移动到它们自己的目录中,并决定使用 ocamlbuild(因为项目变得越来越复杂,简单的 shell 脚本已经不够用了)。
通过使用一些基本规则修改 myocamlbuild(调用 ocaml_lib,我将在其他时间使用 ocamlfind),我能够成功地包含外部项目,但我被困在如何将文件夹作为模块包含到项目中适当地。我创建了一个parser.mlpack 文件并用要包含的适当模块填充它(例如,“解析器/日期”等),在目录的根目录中写了一个parser.mli 用于它们的实现,并修改了@987654324 @ 文件(见下文)。
编译过程中,正确遍历了解析器目录,parser.cmi、parser.mli.depends都创建在_build目录下;以及解析器子目录中的所有*.cm[xio] 文件。
我觉得我可能做了一些多余的事情,但无论如何,项目仍然在我编译时找不到 Parser 模块!
谢谢!
_tags
debug : true
<*.ml> : annot
"parser" : include
<parser/*.cmx>: for-pack(Parser)
<curlIO.*> : use_curl
<mySQL.*> : use_mysql
<**/*.native> or <**/*.byte> : use_str,use_unix,use_curl,use_mysql
编译错误
/usr/local/bin/ocamlopt.opt unix.cmxa str.cmxa -g -I /usr/local/lib/ocaml/site-lib/mysql mysql.cmxa -I /usr/local/lib/ocaml/curl curl.cmxa curlIO.cmx utilities.cmx date.cmx fraction.cmx logger.cmx mySQL.cmx data.cmx project.cmx -o project.native
File "\_none\_", line 1, characters 0-1:
Error: **No implementations provided for the following modules:**
Parser referenced from project.cmx
Command exited with code 2.
您会注意到-I parser 不包含在上面的链接阶段;实际上没有包含任何解析器相关文件!
编辑:添加了来自 cmets 的新细节并在下面回答。
【问题讨论】:
标签: compilation ocaml ocamlbuild